Microsoft SQL Server
String-Funktionen
Suche…
Bemerkungen
Liste der Stringfunktionen (alphabetisch sortiert):
Links
Gibt eine untergeordnete Zeichenfolge zurück, die mit dem ganz linken Zeichen einer Zeichenfolge beginnt und bis zur angegebenen maximalen Länge reicht.
Parameter:
- Zeichenausdruck. Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in
varchar
odernvarchar
konvertiert werdennvarchar
, mit Ausnahme vontext
oderntext
- maximale Länge. Eine ganze Zahl zwischen 0 und
bigint
Maximalwert (9.223.372.036.854.775.807).
Wenn der Parameter für die maximale Länge negativ ist, wird ein Fehler ausgegeben.
SELECT LEFT('This is my string', 4) -- result: 'This'
Wenn die maximale Länge mehr als die Anzahl der Zeichen in der Zeichenfolge ist, wird die Entier-Zeichenfolge zurückgegeben.
SELECT LEFT('This is my string', 50) -- result: 'This is my string'
Recht
Gibt eine Unterzeichenfolge mit der angegebenen maximalen Länge zurück, die den rechten Teil der Zeichenfolge darstellt.
Parameter:
- Zeichenausdruck. Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in
varchar
odernvarchar
konvertiert werdennvarchar
, mit Ausnahme vontext
oderntext
- maximale Länge. Eine ganze Zahl zwischen 0 und
bigint
Maximalwert (9.223.372.036.854.775.807). Wenn der Parameter für die maximale Länge negativ ist, wird ein Fehler ausgegeben.
SELECT RIGHT('This is my string', 6) -- returns 'string'
Wenn die maximale Länge mehr als die Anzahl der Zeichen in der Zeichenfolge ist, wird die Entier-Zeichenfolge zurückgegeben.
SELECT RIGHT('This is my string', 50) -- returns 'This is my string'
Unterstring
Gibt einen Teilstring zurück, der mit dem Zeichen beginnt, das sich im angegebenen Startindex befindet, und der angegebenen maximalen Länge.
Parameter:
- Zeichenausdruck Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in
varchar
odernvarchar
konvertiert werdennvarchar
, mit Ausnahme vontext
oderntext
. - Startindex. Eine Zahl (
int
oderbigint
), die denbigint
des angeforderten Teilstrings angibt. ( Hinweis: Zeichenfolgen in SQL Server sind Basis-1-Index, dh das erste Zeichen der Zeichenfolge ist Index 1). Diese Anzahl kann kleiner als 1 sein. Wenn die Summe aus Startindex und maximaler Länge größer als 0 ist, wäre der Rückgabestring ein String, der mit dem ersten Zeichen des Zeichenausdrucks beginnt und die Länge von (Startindex) hat + maximale Länge - 1). Wenn es weniger als 0 ist, wird eine leere Zeichenfolge zurückgegeben. - Maximale Länge. Eine ganze Zahl zwischen 0 und
bigint
Maximalwert (9.223.372.036.854.775.807). Wenn der Parameter für die maximale Länge negativ ist, wird ein Fehler ausgegeben.
SELECT SUBSTRING('This is my string', 6, 5) -- returns 'is my'
Wenn die maximale Länge + Startindex mehr als die Anzahl der Zeichen in der Zeichenfolge ist, wird die Entierzeichenfolge zurückgegeben.
SELECT SUBSTRING('Hello World',1,100) -- returns 'Hello World'
Wenn der Startindex größer als die Anzahl der Zeichen in der Zeichenfolge ist, wird eine leere Zeichenfolge zurückgegeben.
SELECT SUBSTRING('Hello World',15,10) -- returns ''
ASCII
Gibt einen int-Wert zurück, der den ASCII-Code des ganz linken Zeichens einer Zeichenfolge darstellt.
SELECT ASCII('t') -- Returns 116
SELECT ASCII('T') -- Returns 84
SELECT ASCII('This') -- Returns 84
Wenn die Zeichenfolge Unicode ist und das äußerste linke Zeichen kein ASCII-Zeichen ist, sondern in der aktuellen Kollatierung darstellbar ist, kann ein Wert größer als 127 zurückgegeben werden:
SELECT ASCII(N'ï') -- returns 239 when `SERVERPROPERTY('COLLATION') = 'SQL_Latin1_General_CP1_CI_AS'`
Wenn die Zeichenfolge Unicode ist und das Zeichen ganz links in der aktuellen Sortierung nicht dargestellt werden kann, wird der int-Wert von 63 zurückgegeben: (der das Fragezeichen in ASCII darstellt):
SELECT ASCII(N'߷') -- returns 63
SELECT ASCII(nchar(2039)) -- returns 63
CharIndex
Gibt den Startindex des ersten Vorkommens eines Zeichenfolgenausdrucks in einem anderen Zeichenfolgenausdruck zurück.
Parameterliste:
- Zeichenfolge zu finden (bis zu 8000 Zeichen)
- Zeichenfolge für die Suche (beliebiger gültiger Zeichendatentyp und Länge, einschließlich binärer Zeichen)
- (Optional) Index zum Starten. Eine Anzahl von int oder big int. Bei Auslassung oder weniger als 1 beginnt die Suche am Anfang der Zeichenfolge.
Wenn der zu suchende String varchar(max)
, nvarchar(max)
oder varbinary(max)
, gibt die CHARINDEX
Funktion einen bigint
Wert zurück. Andernfalls wird ein int
.
SELECT CHARINDEX('is', 'this is my string') -- returns 3
SELECT CHARINDEX('is', 'this is my string', 4) -- returns 6
SELECT CHARINDEX(' is', 'this is my string') -- returns 5
Verkohlen
Gibt ein Zeichen zurück, das durch einen int-ASCII-Code dargestellt wird.
SELECT CHAR(116) -- Returns 't'
SELECT CHAR(84) -- Returns 'T'
Dies kann verwendet werden, um neue Zeilen- / Zeilenvorschub- CHAR(10)
, Wagenrücklauf- CHAR(13)
usw. einzuführen . Siehe AsciiTable.com .
Wenn der Argumentwert nicht zwischen 0 und 255 liegt, gibt die CHAR-Funktion NULL
.
Der Rückgabedatentyp der CHAR
Funktion ist char(1)
Len
Gibt die Anzahl der Zeichen einer Zeichenfolge zurück.
Hinweis: Die LEN
Funktion ignoriert nachfolgende Leerzeichen:
SELECT LEN('My string'), -- returns 9
LEN('My string '), -- returns 9
LEN(' My string') -- returns 12
Wenn die Länge einschließlich der nachgestellten Leerzeichen gewünscht wird, gibt es mehrere Techniken, um dies zu erreichen, obwohl jede ihre Nachteile hat. Eine Technik besteht darin, ein einzelnes Zeichen an die Zeichenfolge anzuhängen und dann die LEN
Zeichen minus eins zu verwenden:
DECLARE @str varchar(100) = 'My string '
SELECT LEN(@str + 'x') - 1 -- returns 12
Der Nachteil dabei ist, wenn der Typ der Zeichenfolgenvariablen oder -spalte die maximale Länge hat, das Anfügen des zusätzlichen Zeichens verworfen wird und die resultierende Länge nachstehende Leerzeichen nicht zählt. Um dies zu beheben, löst die folgende modifizierte Version das Problem und gibt in allen Fällen die korrekten Ergebnisse auf Kosten einer geringen zusätzlichen Ausführungszeit und aus diesem Grund (korrekte Ergebnisse einschließlich mit Ersatzpaaren und angemessene Ausführungsgeschwindigkeit). scheint die beste Technik zu sein:
SELECT LEN(CONVERT(NVARCHAR(MAX), @str) + 'x') - 1
Eine andere Technik ist die Verwendung der DATALENGTH
Funktion.
DECLARE @str varchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 12
Beachten Sie jedoch, dass DATALENGTH
die Länge der Zeichenfolge im Speicher in Byte zurückgibt. Dies wird für varchar
und nvarchar
.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 24
Sie können dies anpassen, indem Sie die Datenlänge der Zeichenfolge durch die Datenlänge eines einzelnen Zeichens (das vom selben Typ sein muss) dividieren. Das folgende Beispiel führt dies aus und behandelt auch den Fall, in dem die Zielzeichenfolge leer ist, wodurch eine Division durch Null vermieden wird.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) / DATALENGTH(LEFT(LEFT(@str, 1) + 'x', 1)) -- returns 12
Auch dies hat jedoch ein Problem in SQL Server 2012 und höher. Wenn die Zeichenfolge Ersatzpaare enthält, führt dies zu falschen Ergebnissen (einige Zeichen können mehr Bytes als andere Zeichen in derselben Zeichenfolge belegen).
Eine andere Technik besteht darin, mit REPLACE
Leerzeichen in ein Zeichen ohne Leerzeichen umzuwandeln und die LEN
des Ergebnisses zu erhalten. Dies führt in allen Fällen zu korrekten Ergebnissen, hat aber bei langen Zeichenketten eine sehr schlechte Ausführungsgeschwindigkeit.
Concat
Gibt eine Zeichenfolge zurück, die das Ergebnis von zwei oder mehr miteinander verbundenen Zeichenfolgen ist. CONCAT
akzeptiert zwei oder mehr Argumente.
SELECT CONCAT('This', ' is', ' my', ' string') -- returns 'This is my string'
Hinweis: Im Gegensatz zum Verknüpfen von Zeichenfolgen mit dem Zeichenfolgenverkettungsoperator ( +
) wird dieser beim Übergeben eines Nullwerts an die concat
Funktion implizit in einen leeren String konvertiert:
SELECT CONCAT('This', NULL, ' is', ' my', ' string'), -- returns 'This is my string'
'This' + NULL + ' is' + ' my' + ' string' -- returns NULL.
Auch Argumente eines Nicht-String-Typs werden implizit in einen String umgewandelt:
SELECT CONCAT('This', ' is my ', 3, 'rd string') -- returns 'This is my 3rd string'
Nicht-String-Typ-Variablen werden ebenfalls in das String-Format konvertiert. Sie müssen sie nicht manuell konvertieren oder in String umwandeln:
DECLARE @Age INT=23;
SELECT CONCAT('Ram is ', @Age,' years old'); -- returns 'Ram is 23 years old'
Ältere Versionen unterstützen die CONCAT
Funktion nicht und müssen stattdessen den Zeichenfolgenverkettungsoperator ( +
) verwenden. Nicht-String-Typen müssen in String-Typen umgewandelt oder konvertiert werden, um sie auf diese Weise zu verketten.
SELECT 'This is the number ' + CAST(42 AS VARCHAR(5)) --returns 'This is the number 42'
Niedriger
Gibt einen Zeichenausdruck ( varchar
oder nvarchar
) zurück, nachdem alle Großbuchstaben in Kleinbuchstaben umgewandelt wurden.
Parameter:
- Zeichenausdruck Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in
varchar
konvertiert werdenvarchar
.
SELECT LOWER('This IS my STRING') -- Returns 'this is my string'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT LOWER(@String) -- Returns 'this is my string'
Oberer, höher
Gibt einen Zeichenausdruck ( varchar
oder nvarchar
) zurück, nachdem alle Kleinbuchstaben in Großbuchstaben umgewandelt wurden.
Parameter:
- Zeichenausdruck Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in
varchar
konvertiert werdenvarchar
.
SELECT UPPER('This IS my STRING') -- Returns 'THIS IS MY STRING'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT UPPER(@String) -- Returns 'THIS IS MY STRING'
LTrim
Gibt einen Zeichenausdruck ( varchar
oder nvarchar
) zurück, nachdem alle führenden Leerzeichen entfernt wurden, dh Leerzeichen von links bis zum ersten nicht-weißen Leerzeichen.
Parameter:
- Zeichenausdruck. Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in
varcher
konvertiert werdenvarcher
, mit Ausnahme vontext
,ntext
undimage
.
SELECT LTRIM(' This is my string') -- Returns 'This is my string'
RTrim
Gibt einen Zeichenausdruck ( varchar
oder nvarchar
) zurück, nachdem alle nvarchar
Leerzeichen entfernt wurden, dh Leerzeichen vom rechten Ende der Zeichenfolge bis zum ersten nicht-weißen Leerzeichen links.
Parameter:
- Zeichenausdruck. Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in
varcher
konvertiert werdenvarcher
, mit Ausnahme vontext
,ntext
undimage
.
SELECT RTRIM('This is my string ') -- Returns 'This is my string'
Unicode
Gibt den ganzzahligen Wert zurück, der den Unicode-Wert des ersten Zeichens des Eingabeausdrucks darstellt.
Parameter:
- Unicode-Zeichenausdruck Jeder gültige
nchar
odernvarchar
Ausdruck.
SELECT UNICODE(N'Ɛ') -- Returns 400
DECLARE @Unicode nvarchar(11) = N'Ɛ is a char'
SELECT UNICODE(@Unicode) -- Returns 400
NChar
Gibt das (die) Unicode-Zeichen ( nchar(1)
oder nvarchar(2)
) zurück, die dem ganzzahligen Argument entsprechen, das es empfängt, wie vom Unicode-Standard definiert.
Parameter:
- ganzzahliger Ausdruck. Jeder ganzzahlige Ausdruck, bei dem es sich um eine positive Zahl zwischen 0 und 65535 handelt. Wenn die Sortierung der Datenbank das Zusatzzeichen (CS) -Flag unterstützt, liegt der unterstützte Bereich zwischen 0 und 1114111. Wenn der Ganzzahlausdruck nicht in diesen Bereich fällt, ist
null
ist zurückgekommen.
SELECT NCHAR(257) -- Returns 'ā'
SELECT NCHAR(400) -- Returns 'Ɛ'
Umkehren
Gibt einen Stringwert in umgekehrter Reihenfolge zurück.
Parameter:
- Zeichenfolgenausdruck Alle Zeichenfolgen oder Binärdaten, die implizit in
varchar
konvertiert werdenvarchar
.
Select REVERSE('Sql Server') -- Returns 'revreS lqS'
PatIndex
Gibt die Startposition des ersten Vorkommens eines angegebenen Musters im angegebenen Ausdruck zurück.
Parameter:
Muster. Ein Zeichenausdruck enthält die zu findende Sequenz. Begrenzt auf eine maximale Länge von 8000 Zeichen. Platzhalter (
%
,_
) können im Muster verwendet werden. Wenn das Muster nicht mit einem Platzhalter beginnt, stimmt es möglicherweise nur mit dem Anfang des Ausdrucks überein. Wenn es nicht mit einem Platzhalter endet, stimmt es möglicherweise nur mit dem Ende des Ausdrucks überein.Ausdruck. Beliebiger String-Datentyp
SELECT PATINDEX('%ter%', 'interesting') -- Returns 3.
SELECT PATINDEX('%t_r%t%', 'interesting') -- Returns 3.
SELECT PATINDEX('ter%', 'interesting') -- Returns 0, since 'ter' is not at the start.
SELECT PATINDEX('inter%', 'interesting') -- Returns 1.
SELECT PATINDEX('%ing', 'interesting') -- Returns 9.
Platz
Gibt eine Zeichenfolge ( varchar
) aus wiederholten Leerzeichen zurück.
Parameter:
- ganzzahliger Ausdruck. Ein ganzzahliger Ausdruck bis 8000. Bei einem negativen
null
wirdnull
zurückgegeben. Bei 0 wird eine leere Zeichenfolge zurückgegeben. (Um eine Zeichenfolge mit mehr als 8000 Leerzeichen zurückzugeben, verwenden Sie Replicate.
SELECT SPACE(-1) -- Returns NULL
SELECT SPACE(0) -- Returns an empty string
SELECT SPACE(3) -- Returns ' ' (a string containing 3 spaces)
Replizieren
Wiederholt einen String-Wert eine bestimmte Anzahl von Malen.
Parameter:
- Zeichenfolgenausdruck Der Zeichenfolgenausdruck kann eine Zeichenfolge oder binäre Daten sein.
- ganzzahliger Ausdruck. Jeder ganzzahlige Typ, einschließlich
bigint
. Wenn negativ, wirdnull
zurückgegeben. Bei 0 wird eine leere Zeichenfolge zurückgegeben.
SELECT REPLICATE('a', -1) -- Returns NULL
SELECT REPLICATE('a', 0) -- Returns ''
SELECT REPLICATE('a', 5) -- Returns 'aaaaa'
SELECT REPLICATE('Abc', 3) -- Returns 'AbcAbcAbc'
Anmerkung: Wenn der Zeichenfolgenausdruck nicht vom Typ varchar(max)
oder nvarchar(max)
, überschreitet der Rückgabewert 8000 Zeichen nicht. Replicate stoppt vor dem Hinzufügen der Zeichenfolge, durch die der Rückgabewert diesen Grenzwert überschreitet:
SELECT LEN(REPLICATE('a b c d e f g h i j k l', 350)) -- Returns 7981
SELECT LEN(REPLICATE(cast('a b c d e f g h i j k l' as varchar(max)), 350)) -- Returns 8050
Ersetzen
Gibt eine Zeichenfolge ( varchar
oder nvarchar
) zurück, bei der alle Vorkommen einer angegebenen Unterzeichenfolge durch eine andere Unterzeichenfolge ersetzt werden.
Parameter:
- Zeichenfolgenausdruck Dies ist die Zeichenfolge, die durchsucht werden würde. Es kann ein Zeichentyp oder ein binärer Datentyp sein.
- Muster. Dies ist die Unterzeichenfolge, die ersetzt werden würde. Es kann ein Zeichentyp oder ein binärer Datentyp sein. Das Musterargument darf keine leere Zeichenfolge sein.
- Ersatz. Dies ist die Unterzeichenfolge, die die Musterunterkette ersetzen würde. Es können Zeichen- oder Binärdaten sein.
SELECT REPLACE('This is my string', 'is', 'XX') -- Returns 'ThXX XX my string'.
Anmerkungen:
- Wenn der Zeichenfolgenausdruck nicht vom Typ
varchar(max)
odernvarchar(max)
,nvarchar(max)
replace
Funktionreplace
den Rückgabewert auf 8000 Zeichen ab. - Der Rückgabedatentyp hängt von den Eingabedatentypen ab.
nvarchar
nvarchar
wenn einer der Eingabewertenvarchar
oder ansonstenvarchar
. -
NULL
wenn einer der EingangsparameterNULL
String_Split
Teilt einen Zeichenfolgenausdruck mit einem Trennzeichen. Beachten Sie, dass STRING_SPLIT()
eine Tabellenwertfunktion ist und daher innerhalb der FROM
Klausel verwendet werden muss.
Parameter:
- Schnur Beliebiger Zeichentypausdruck (
char
,nchar
,varchar
odernvarchar
) - Separator. Ein einzelner Zeichenausdruck eines beliebigen Typs (
char(1)
,nchar(1)
,varchar(1)
odernvarchar(1)
).
Gibt eine einzelne Spaltentabelle zurück, in der jede Zeile ein Fragment der Zeichenfolge enthält. Der Name der Spalten lautet value
und der Datentyp ist nvarchar
wenn einer der Parameter entweder nchar
oder nvarchar
, andernfalls varchar
.
Im folgenden Beispiel wird eine Zeichenfolge mit Leerzeichen als Trennzeichen aufgeteilt:
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Ergebnis:
value
-----
Lorem
ipsum
dolor
sit
amet.
Bemerkungen:
Die Funktion
STRING_SPLIT
ist nur unter dem Kompatibilitätsgrad 130 verfügbar. Wenn Ihre Datenbankkompatibilitätsstufe niedriger als 130 ist, kann der SQL Server dieSTRING_SPLIT
Funktion nicht finden und ausführen. Sie können den Kompatibilitätsgrad einer Datenbank mit dem folgenden Befehl ändern:
ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
Ältere Versionen von SQL Server verfügen nicht über eine integrierte Split-String-Funktion. Es gibt viele benutzerdefinierte Funktionen, die das Problem des Aufteilens einer Zeichenfolge lösen. Sie können Aaron Bertrands Artikel Split Strings richtig lesen - oder den nächstbesten Weg, um einige von ihnen umfassend zu vergleichen.
Str
Gibt Zeichendaten ( varchar
) aus numerischen Daten zurück.
Parameter:
- Float-Ausdruck. Ein ungefährer numerischer Datentyp mit Dezimalpunkt.
- Länge. wahlweise. Die Gesamtlänge des zurückgegebenen Zeichenfolgenausdrucks, einschließlich Ziffern, Dezimalzeichen und Leerzeichen (falls erforderlich). Der Standardwert ist 10.
- Dezimal. wahlweise. Die Anzahl der Ziffern rechts vom Dezimalpunkt. Bei mehr als 16 würde das Ergebnis auf sechzehn Stellen rechts vom Dezimalpunkt abgeschnitten.
SELECT STR(1.2) -- Returns ' 1'
SELECT STR(1.2, 3) -- Returns ' 1'
SELECT STR(1.2, 3, 2) -- Returns '1.2'
SELECT STR(1.2, 5, 2) -- Returns ' 1.20'
SELECT STR(1.2, 5, 5) -- Returns '1.200'
SELECT STR(1, 5, 2) -- Returns ' 1.00'
SELECT STR(1) -- Returns ' 1'
Quotename
Gibt eine Unicode-Zeichenfolge zurück, die von Trennzeichen umgeben ist, um sie zu einer gültigen, durch SQL Server getrennten Bezeichner zu machen.
Parameter:
- Zeichenkette. Eine Zeichenfolge aus Unicode-Daten mit bis zu 128 Zeichen (
sysname
). Wenn eine Eingabezeichenfolge länger als 128 Zeichen ist, gibt die Funktionnull
. - Anführungszeichen Optional . Ein einzelnes Zeichen, das als Trennzeichen verwendet werden soll. Kann ein einfaches Anführungszeichen (
'
oder ``), eine linke oder rechte Klammer ({
,[
,(
,<
oder>
,)
,]
,}
) oder ein doppeltes Anführungszeichen ("
) sein. Jeder andere Wert gibt null zurück Der Standardwert ist eckige Klammern.
SELECT QUOTENAME('what''s my name?') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '[') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', ']') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '''') -- Returns 'what''s my name?'
SELECT QUOTENAME('what''s my name?', '"') -- Returns "what's my name?"
SELECT QUOTENAME('what''s my name?', ')') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '(') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '<') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '>') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '{') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '}') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '`') -- Returns `what's my name?`
Soundex
Gibt einen varchar
Code ( varchar
) zurück, um die phonetische Ähnlichkeit von zwei Zeichenfolgen zu bewerten.
Parameter:
- Zeichenausdruck. Ein alphanumerischer Ausdruck von Zeichendaten.
Die Soundex-Funktion erstellt einen vierstelligen Code, der darauf basiert, wie der Zeichenausdruck klingen würde, wenn er gesprochen wird. Das erste Zeichen ist die Großbuchstabe des ersten Zeichens des Parameters, die restlichen 3 Zeichen sind Zahlen, die die Buchstaben im Ausdruck darstellen (außer a, e, i, o, u, h, w und y, die ignoriert werden) .
SELECT SOUNDEX ('Smith') -- Returns 'S530'
SELECT SOUNDEX ('Smythe') -- Returns 'S530'
Unterschied
Gibt einen Integer-Wert ( int
Wert) zurück, der den Unterschied zwischen den Soundex-Werten von zwei Zeichenausdrücken angibt.
Parameter:
- Zeichenausdruck 1.
- Zeichenausdruck 2.
Beide Parameter sind alphanumerische Ausdrücke von Zeichendaten.
Die zurückgegebene Ganzzahl ist die Anzahl der Zeichen in den Soundex-Werten der Parameter, die gleich sind. 4 bedeutet, dass die Ausdrücke sehr ähnlich sind und 0, dass sie sehr unterschiedlich sind.
SELECT SOUNDEX('Green'), -- G650
SOUNDEX('Greene'), -- G650
DIFFERENCE('Green','Greene') -- Returns 4
SELECT SOUNDEX('Blotchet-Halls'), -- B432
SOUNDEX('Greene'), -- G650
DIFFERENCE('Blotchet-Halls', 'Greene') -- Returns 0
Format
Gibt einen NVARCHAR
Wert zurück, der mit dem angegebenen Format und der angegebenen Kultur formatiert ist (falls angegeben). Dies wird hauptsächlich zum Konvertieren von Datum / Uhrzeit-Typen in Strings verwendet.
Parameter:
-
value
. Ein Ausdruck eines unterstützten Datentyps, der formatiert werden soll. gültige Typen sind unten aufgeführt. -
format
. EinNVARCHAR
. Informationen zu Standard- und benutzerdefinierten Formatzeichenfolgen finden Sie in der offiziellen Dokumentation von Microsoft. -
culture
. Optional .nvarchar
Argument, das eine Kultur angibt. Der Standardwert ist die Kultur der aktuellen Sitzung.
DATUM
Standardformatzeichenfolgen verwenden:
DECLARE @d DATETIME = '2016-07-31';
SELECT
FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' -- Returns '7/31/2016'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31/07/2016'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' -- Returns '31.07.2016'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result' -- Returns '2016/7/31'
,FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' -- Returns 'Sunday, July 31, 2016'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31 July 2016'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' -- Returns 'Sonntag, 31. Juli 2016'
Benutzerdefinierte Formatzeichenfolgen verwenden:
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' -- Returns '31/07/2016'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result' -- Returns '123-45-6789',
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','en-US') AS 'US' -- Returns 'Sunday, July 31, 2016 12:00:00 AM'
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','hi-IN') AS 'Hindi' -- Returns रविवार, जुलाई 31, 2016 12:00:00 पूर्वाह्न
,FORMAT ( @d, 'dddd', 'en-US' ) AS 'US' -- Returns 'Sunday'
,FORMAT ( @d, 'dddd', 'hi-IN' ) AS 'Hindi' -- Returns 'रविवार'
FORMAT
kann auch zur Formatierung von CURRENCY
, PERCENTAGE
und NUMBERS
.
WÄHRUNG
DECLARE @Price1 INT = 40
SELECT FORMAT(@Price1,'c','en-US') AS 'CURRENCY IN US Culture' -- Returns '$40.00'
,FORMAT(@Price1,'c','de-DE') AS 'CURRENCY IN GERMAN Culture' -- Returns '40,00 €'
Wir können die Anzahl der Nachkommastellen angeben.
DECLARE @Price DECIMAL(5,3) = 40.356
SELECT FORMAT( @Price, 'C') AS 'Default', -- Returns '$40.36'
FORMAT( @Price, 'C0') AS 'With 0 Decimal', -- Returns '$40'
FORMAT( @Price, 'C1') AS 'With 1 Decimal', -- Returns '$40.4'
FORMAT( @Price, 'C2') AS 'With 2 Decimal', -- Returns '$40.36'
PROZENTSATZ
DECLARE @Percentage float = 0.35674
SELECT FORMAT( @Percentage, 'P') AS '% Default', -- Returns '35.67 %'
FORMAT( @Percentage, 'P0') AS '% With 0 Decimal', -- Returns '36 %'
FORMAT( @Percentage, 'P1') AS '% with 1 Decimal' -- Returns '35.7 %'
NUMMER
DECLARE @Number AS DECIMAL(10,2) = 454545.389
SELECT FORMAT( @Number, 'N','en-US') AS 'Number Format in US', -- Returns '454,545.39'
FORMAT( @Number, 'N','en-IN') AS 'Number Format in INDIA', -- Returns '4,54,545.39'
FORMAT( @Number, '#.0') AS 'With 1 Decimal', -- Returns '454545.4'
FORMAT( @Number, '#.00') AS 'With 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '#,##.00') AS 'With Comma and 2 Decimal', -- Returns '454,545.39'
FORMAT( @Number, '##.00') AS 'Without Comma and 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '000000000') AS 'Left-padded to nine digits' -- Returns '000454545'
Liste gültiger Werttypen: ( Quelle )
Category Type .Net type
-------------------------------------------
Numeric bigint Int64
Numeric int Int32
Numeric smallint Int16
Numeric tinyint Byte
Numeric decimal SqlDecimal
Numeric numeric SqlDecimal
Numeric float Double
Numeric real Single
Numeric smallmoney Decimal
Numeric money Decimal
Date and Time date DateTime
Date and Time time TimeSpan
Date and Time datetime DateTime
Date and Time smalldatetime DateTime
Date and Time datetime2 DateTime
Date and Time datetimeoffset DateTimeOffset
Wichtige Notizen:
-
FORMAT
gibtNULL
für andere Fehler als eine nicht gültige Kultur zurück. Beispielsweise wirdNULL
zurückgegeben, wenn der im Format angegebene Wert nicht gültig ist. -
FORMAT
setzt das Vorhandensein der Common Language Runtime (CLR) von .NETFORMAT
. -
FORMAT
stützt sich auf CLR-Formatierungsregeln, nach denen Doppelpunkte und Perioden mitFORMAT
werden müssen. Wenn der Formatstring (zweiter Parameter) einen Doppelpunkt oder eine Periode enthält, muss daher der Doppelpunkt oder die Periode mit einem umgekehrten Schrägstrich (Escape-Zeichen) versehen werden, wenn ein Eingabewert (erster Parameter) den Zeitdatentyp hat.
Siehe auch Formatierung von Datum und Uhrzeit unter Verwendung des FORMAT- Dokumentationsbeispiels.
String_escape
Escape Sonderzeichen in Texten und gibt Text ( nvarchar(max)
) mit nvarchar(max)
Parameter:
Text. ist ein
nvarchar
Ausdruck, der die Zeichenfolge darstellt, die mitnvarchar
werden soll.Art. Escape-Regeln, die angewendet werden. Momentan ist der einzige unterstützte Wert
'json'
.
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') -- returns '\\\t\/\n\\\\\t\"\t'
Liste der Zeichen, die maskiert werden:
Special character Encoded sequence
-------------------------------------
Quotation mark (") \"
Reverse solidus (\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t
Control character Encoded sequence
------------------------------------
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f