Gibt es eine MS SQL Server-Funktion, die zählt, wie oft ein bestimmtes Zeichen in einer Zeichenfolge angezeigt wird?
sql-server
Alter Mann
quelle
quelle
Antworten:
Es gibt keine direkte Funktion dafür, aber Sie können dies durch Ersetzen tun:
declare @myvar varchar(20) set @myvar = 'Hello World' select len(@myvar) - len(replace(@myvar,'o',''))
Grundsätzlich zeigt dies an, wie viele Zeichen entfernt wurden und wie viele Instanzen davon vorhanden waren.
Extra:
Das Obige kann erweitert werden, um das Auftreten einer Zeichenfolge mit mehreren Zeichen zu zählen, indem durch die Länge der gesuchten Zeichenfolge dividiert wird. Zum Beispiel:
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)
quelle
Überprüfen Sie die Länge der Zeichenfolge, nachdem Sie die Sequenz ersetzt haben
declare @s varchar(10) = 'aabaacaa' select len(@s) - len(replace(@s, 'a', '')) >>6
quelle
Sie können dies mit
replace
und tunlen
.Anzahl der
x
Zeichen zählen instr
:len(str) - len(replace(str, 'x', ''))
quelle
Verwenden Sie diese Funktion ab SQL Server 2016
Select Count(value) From STRING_SPLIT('AAA AAA AAA',' '); -- Output : 3
quelle
Versuch das :
declare @t nvarchar(max) set @t='aaaa' select len(@t)-len(replace(@t,'a',''))
quelle
Sie können dies vollständig inline tun, indem Sie das gewünschte Zeichen durch eine leere Zeichenfolge ersetzen, die LENGTH-Funktion aufrufen und von der Länge der ursprünglichen Zeichenfolge abziehen.
SELECT CustomerName, LENGTH(CustomerName) - LENGTH(REPLACE(CustomerName, ' ', '')) AS NumberOfSpaces FROM Customers;
quelle
Sie können dies inline tun, müssen jedoch mit Leerzeichen in den Spaltendaten vorsichtig sein. Verwenden Sie besser datalength ()
SELECT ColName, DATALENGTH(ColName) - DATALENGTH(REPLACE(Col, 'A', '')) AS NumberOfLetterA FROM ColName;
-OR- Ersetzen Sie durch 2 Zeichen
SELECT ColName, -LEN(ColName) +LEN(REPLACE(Col, 'A', '><')) AS NumberOfLetterA FROM ColName;
quelle
Funktion für SQL Server:
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
Code für Visual Basic und andere:
Public Function NTSCuentaChars(Texto As String, CharAContar As String) As Long NTSCuentaChars = (Len(Texto) - Len(Replace(Texto, CharAContar, ""))) / Len(CharAContar) End Function
quelle
BESTE
DECLARE @yourSpecialMark = '/'; select len(@yourString) - len(replace(@yourString,@yourSpecialMark,''))
Es wird gezählt, wie oft die Sondermarke '/' vorkommt.
quelle
Verwenden Sie diesen Code, es funktioniert einwandfrei. Ich habe eine SQL-Funktion erstellt, die zwei Parameter akzeptiert. Der erste Parameter ist die lange Zeichenfolge, nach der gesucht werden soll, und sie kann eine Zeichenfolgenlänge von bis zu 1500 Zeichen akzeptieren (natürlich können Sie sie erweitern oder sogar in einen Textdatentyp ändern ). Und der zweite Parameter ist der Teilstring, mit dem wir die Anzahl seiner Vorkommen berechnen möchten (seine Länge beträgt bis zu 200 Zeichen, natürlich können Sie ihn nach Ihren Wünschen ändern). und die Ausgabe ist eine ganze Zahl, repräsentieren die Anzahl der Frequenzen ..... genießen Sie es.
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
quelle