Suche…


Bemerkungen

Liste der Stringfunktionen (alphabetisch sortiert):

Gibt eine untergeordnete Zeichenfolge zurück, die mit dem ganz linken Zeichen einer Zeichenfolge beginnt und bis zur angegebenen maximalen Länge reicht.

Parameter:

  1. Zeichenausdruck. Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in varchar oder nvarchar konvertiert werden nvarchar , mit Ausnahme von text oder ntext
  2. 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:

  1. Zeichenausdruck. Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in varchar oder nvarchar konvertiert werden nvarchar , mit Ausnahme von text oder ntext
  2. 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:

  1. Zeichenausdruck Der Zeichenausdruck kann einen beliebigen Datentyp haben, der implizit in varchar oder nvarchar konvertiert werden nvarchar , mit Ausnahme von text oder ntext .
  2. Startindex. Eine Zahl ( int oder bigint ), die den bigint 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.
  3. 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:

  1. Zeichenfolge zu finden (bis zu 8000 Zeichen)
  2. Zeichenfolge für die Suche (beliebiger gültiger Zeichendatentyp und Länge, einschließlich binärer Zeichen)
  3. (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

SQL Server 2012

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'
SQL Server 2012

Ä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:

  1. Zeichenausdruck Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in varchar konvertiert werden varchar .
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:

  1. Zeichenausdruck Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in varchar konvertiert werden varchar .
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:

  1. Zeichenausdruck. Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in varcher konvertiert werden varcher , mit Ausnahme von text , ntext und image .
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:

  1. Zeichenausdruck. Jeder Ausdruck von Zeichen- oder Binärdaten, der implizit in varcher konvertiert werden varcher , mit Ausnahme von text , ntext und image .
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:

  1. Unicode-Zeichenausdruck Jeder gültige nchar oder nvarchar 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:

  1. 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:

  1. Zeichenfolgenausdruck Alle Zeichenfolgen oder Binärdaten, die implizit in varchar konvertiert werden varchar .
Select REVERSE('Sql Server') -- Returns 'revreS lqS'

PatIndex

Gibt die Startposition des ersten Vorkommens eines angegebenen Musters im angegebenen Ausdruck zurück.

Parameter:

  1. 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.

  2. 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:

  1. ganzzahliger Ausdruck. Ein ganzzahliger Ausdruck bis 8000. Bei einem negativen null wird null 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:

  1. Zeichenfolgenausdruck Der Zeichenfolgenausdruck kann eine Zeichenfolge oder binäre Daten sein.
  2. ganzzahliger Ausdruck. Jeder ganzzahlige Typ, einschließlich bigint . Wenn negativ, wird null 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:

  1. Zeichenfolgenausdruck Dies ist die Zeichenfolge, die durchsucht werden würde. Es kann ein Zeichentyp oder ein binärer Datentyp sein.
  2. 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.
  3. 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) oder nvarchar(max) , nvarchar(max) replace Funktion replace den Rückgabewert auf 8000 Zeichen ab.
  • Der Rückgabedatentyp hängt von den Eingabedatentypen ab. nvarchar nvarchar wenn einer der Eingabewerte nvarchar oder ansonsten varchar .
  • NULL wenn einer der Eingangsparameter NULL

String_Split

SQL Server 2016

Teilt einen Zeichenfolgenausdruck mit einem Trennzeichen. Beachten Sie, dass STRING_SPLIT() eine Tabellenwertfunktion ist und daher innerhalb der FROM Klausel verwendet werden muss.

Parameter:

  1. Schnur Beliebiger Zeichentypausdruck ( char , nchar , varchar oder nvarchar )
  2. Separator. Ein einzelner Zeichenausdruck eines beliebigen Typs ( char(1) , nchar(1) , varchar(1) oder nvarchar(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 die STRING_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
SQL Server 2016

Ä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:

  1. Float-Ausdruck. Ein ungefährer numerischer Datentyp mit Dezimalpunkt.
  2. Länge. wahlweise. Die Gesamtlänge des zurückgegebenen Zeichenfolgenausdrucks, einschließlich Ziffern, Dezimalzeichen und Leerzeichen (falls erforderlich). Der Standardwert ist 10.
  3. 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:

  1. Zeichenkette. Eine Zeichenfolge aus Unicode-Daten mit bis zu 128 Zeichen ( sysname ). Wenn eine Eingabezeichenfolge länger als 128 Zeichen ist, gibt die Funktion null .
  2. 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:

  1. 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:

  1. Zeichenausdruck 1.
  2. 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

SQL Server 2012

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:

  1. value . Ein Ausdruck eines unterstützten Datentyps, der formatiert werden soll. gültige Typen sind unten aufgeführt.
  2. format . Ein NVARCHAR . Informationen zu Standard- und benutzerdefinierten Formatzeichenfolgen finden Sie in der offiziellen Dokumentation von Microsoft.
  3. 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 gibt NULL für andere Fehler als eine nicht gültige Kultur zurück. Beispielsweise wird NULL zurückgegeben, wenn der im Format angegebene Wert nicht gültig ist.
  • FORMAT setzt das Vorhandensein der Common Language Runtime (CLR) von .NET FORMAT .
  • FORMAT stützt sich auf CLR-Formatierungsregeln, nach denen Doppelpunkte und Perioden mit FORMAT 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

SQL Server 2016

Escape Sonderzeichen in Texten und gibt Text ( nvarchar(max) ) mit nvarchar(max)

Parameter:

  1. Text. ist ein nvarchar Ausdruck, der die Zeichenfolge darstellt, die mit nvarchar werden soll.

  2. 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


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow