2012-03-20 7 views
42

में कोई विशेष वर्ण प्रकट होने की संख्या कितनी बार एमएस एसक्यूएल सर्वर फ़ंक्शन है जो स्ट्रिंग में किसी विशेष वर्ण को प्रदर्शित करने की संख्या की गणना करता है?स्ट्रिंग

+0

यह मदद कर सकता है http://social.msdn.microsoft.com/Forums/en/transactsql/thread/6bd2da08-af9e-4216-bec3-1e859415d800 –

+1

निम्नलिखित समान तो सवाल [कड़ी] (http का प्रयास करें: //stackoverflow.com/questions/1144172/how-to-count-the-number-of-times-a-character-appears-in-a-sql-column) –

+0

SO का डुप्लिकेट [आप कैसे संख्या की गणना करते हैं एसक्यूएल वर्कर में एक निश्चित सबस्ट्रिंग की घटनाएं?] (http://stackoverflow.com/questions/738282/how-do-you-count-the-number-of-occurrences-of-a-certain-substring-in- ए-एसक्यूएल-वर्च) जो पुराना है और इसमें अधिक जवाब हैं। – Peter

उत्तर

99

इस के लिए कोई सीधा समारोह है, लेकिन आप के साथ यह कर सकते हैं एक की जगह:

declare @myvar varchar(20) 
set @myvar = 'Hello World' 

select len(@myvar) - len(replace(@myvar,'o','')) 

मूल रूप से इस है कि कितने वर्ण हटा दिया गया है, और इसलिए कैसे इसके कई उदाहरण थे।

अतिरिक्त:

ऊपर स्ट्रिंग की लंबाई से विभाजित के लिए खोजा जा रहा द्वारा एक बहु चार स्ट्रिंग की आवृत्तियां गिनती करने के लिए बढ़ाया जा सकता है। उदाहरण के लिए:

declare @myvar varchar(max), @tocount varchar(20) 
set @myvar = 'Hello World, Hello World' 
set @tocount = 'lo' 

select (len(@myvar) - len(replace(@myvar,@tocount,'')))/LEN(@tocount) 
+1

शायद DATALENGTH का उपयोग करके LEN बेहतर होगा, क्योंकि LEN स्ट्रिंग ट्रिम किए गए आकार का आकार देता है। – rodrigocl

4

कोशिश है कि:

declare @t nvarchar(max) 
set @t='aaaa' 

select len(@t)-len(replace(@t,'a','')) 
7

आपको लगता है कि replace और len उपयोग कर सकते हैं। str में x पात्रों में से

गणना संख्या: अनुक्रम बदलने के बाद स्ट्रिंग की लंबाई पर

len(str) - len(replace(str, 'x', '')) 
15

देखो

declare @s varchar(10) = 'aabaacaa' 
select len(@s) - len(replace(@s, 'a', '')) 
>>6 
1

एसक्यूएल सर्वर के लिए समारोह:

CREATE function NTSGetCinC(@Cadena nvarchar(4000), @UnChar nvarchar(100)) 
Returns int 

as 

begin 

declare @t1 int 

declare @t2 int 

declare @t3 int 

set @t1 = len(@Cadena) 

set @t2 = len(replace(@Cadena,@UnChar,'')) 

set @t3 = len(@UnChar) 


return (@t1 - @t2)/@t3 

end 

कोड दृश्य मूल और अन्य के लिए:

Public Function NTSCuentaChars(Texto As String, CharAContar As String) As Long 

NTSCuentaChars = (Len(Texto) - Len(Replace(Texto, CharAContar, "")))/Len(CharAContar) 

End Function 
संबंधित मुद्दे