programing

특정 문자가 문자열에 나타나는 횟수

elecom 2023. 4. 28. 20:11
반응형

특정 문자가 문자열에 나타나는 횟수

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

이에 대한 직접적인 기능은 없지만 대체 기능으로 수행할 수 있습니다.

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)

시퀀스를 바꾼 후 문자열의 길이를 확인합니다.

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

를 사용하여 이 작업을 수행할 수 있습니다.replace그리고.len.

개수:x의 등장인물.str:

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

SQL SERVER 2016부터 이 기능을 사용합니다.

Select Count(value) From STRING_SPLIT('AAA AAA AAA',' ');

-- Output : 3 

이 함수를 카운트 함수와 함께 사용하면 문자열에 몇 개의 문자가 있는지 알 수 있습니다.

시도:

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

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

인라인으로 할 수 있지만 열 데이터의 공백은 주의해야 합니다.데이터 길이()를 사용하는 것이 좋습니다.

SELECT 
  ColName, 
  DATALENGTH(ColName) -
  DATALENGTH(REPLACE(Col, 'A', '')) AS NumberOfLetterA
FROM ColName;

- 또는 - 2자로 교체합니다.

SELECT 
  ColName, 
  -LEN(ColName)
  +LEN(REPLACE(Col, 'A', '><')) AS NumberOfLetterA
FROM ColName;

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

특정 문자의 발생 횟수를 계산합니다.

DECLARE @char NVARCHAR(50);
DECLARE @counter INT = 0;
DECLARE @i INT = 1;
DECLARE @search NVARCHAR(10) = 'o'
    SET @char = N'Hello World';
    WHILE @i <= LEN(@char)
     BEGIN
        IF SUBSTRING(@char, @i, 1) = @search
            SET @counter += 1;

        SET @i += 1;
     END;

     SELECT @counter;

이 코드를 사용하십시오. 완벽하게 작동합니다.저는 두 가지 매개 변수를 허용하는 sql 함수를 만들었습니다. 첫 번째 매개 변수는 검색하고자 하는 긴 문자열이며 최대 1500자까지 문자열 길이를 허용할 수 있습니다(물론 확장하거나 텍스트 데이터 유형으로 변경할 수도 있습니다).그리고 두 번째 매개변수는 발생 횟수를 계산하고자 하는 부분 문자열입니다. (최대 200자입니다. 물론 필요에 따라 변경할 수 있습니다.)출력은 정수이고, 주파수 수를 나타냅니다. 출력을 나타내는 것은...


CREATE FUNCTION [dbo].[GetSubstringCount]
(
  @InputString nvarchar(1500),
  @SubString NVARCHAR(200)
)
RETURNS int
AS
BEGIN 
        declare @K int , @StrLen int , @Count int , @SubStrLen int 
        set @SubStrLen = (select len(@SubString))
        set @Count = 0
        Set @k = 1
        set @StrLen =(select len(@InputString))
    While @K <= @StrLen
        Begin
            if ((select substring(@InputString, @K, @SubStrLen)) = @SubString)
                begin
                    if ((select CHARINDEX(@SubString ,@InputString)) > 0)
                        begin
                        set @Count = @Count +1
                        end
                end
                                Set @K=@k+1
        end
        return @Count
end

언급URL : https://stackoverflow.com/questions/9789225/number-of-times-a-particular-character-appears-in-a-string

반응형