2012-03-20 4 views
42

문자열에 특정 문자가 나타나는 횟수를 계산하는 MS SQL Server 기능이 있습니까?문자열에 특정 문자가 나타나는 횟수

+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-imes-a-character-appears-in-a-sql-column) –

+0

SO의 중복 [어떻게 계산합니까? SQL varchar에서 특정 부분 문자열의 발생?] (http://stackoverflow.com/questions/738282/how-do-you-count-the-number-of-occurrences-of-a-certain-substring-in- a-sql-varch)를 사용합니다. – 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

LEN 대신 트리밍 된 문자열의 크기를 반환하므로 LAT 대신 DATALENGTH를 사용하는 것이 좋습니다. – rodrigocl

4

는 것을 시도 :

이에 대한 직접적인 기능이 없습니다
declare @t nvarchar(max) 
set @t='aaaa' 

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

당신은 replacelen를 사용하는 것을 할 수 있습니다. str에서 x 문자

카운트 번호 : 순서를 교체 한 후에 문자열의 길이에

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

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

SQL 서버의 기능 :

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 
관련 문제