Есть ли функция MS SQL Server, которая подсчитывает количество раз, когда конкретный символ появляется в строке?
Количество раз, когда конкретный символ появляется в строке
Ответ 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,''))
Он посчитает, сколько раз встречается специальная отметка '/'