Подтвердить что ты не робот

Количество раз, когда конкретный символ появляется в строке

Есть ли функция MS SQL Server, которая подсчитывает количество раз, когда конкретный символ появляется в строке?

4b9b3361

Ответ 1

Нет никакой прямой функции для этого, но вы можете сделать это с заменой:

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

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

В основном это говорит вам, сколько символов было удалено, и, следовательно, сколько его экземпляров было.

Дополнительно:

Вышеприведенное может быть расширено для подсчета вхождения последовательности multi- char путем деления на длину искомой строки. Например:

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)

Ответ 2

Посмотрите на длину строки после замены последовательности

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

Ответ 3

Вы можете сделать это с помощью replace и len.

Подсчитайте число x символов в str:

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

Ответ 4

попробуйте следующее:

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

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

Ответ 5

Используйте эту функцию, начиная с SQL SERVER 2016

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

-- Output : 3 

Когда эта функция используется с функцией подсчета, она дает вам, сколько символов существует в строке

Ответ 6

для сервера 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

Ответ 7

Вы можете сделать это полностью в строке, заменив нужный символ пустой строкой, вызвав функцию LENGTH и вычтя из исходной длины строки.

SELECT 
  CustomerName, 
  LENGTH(CustomerName) -
  LENGTH(REPLACE(CustomerName, ' ', '')) AS NumberOfSpaces
FROM Customers;

Ответ 8

Используйте этот код, он работает отлично. Я создал функцию 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 @[email protected]+1
        end
        return @Count
end

Ответ 9

ЛУЧШИЙ

DECLARE @yourSpecialMark = '/';
select len(@yourString) - len(replace(@yourString,@yourSpecialMark,''))

Он посчитает, сколько раз встречается специальная отметка '/'