SQL
String-Funktionen
Suche…
Einführung
Stringfunktionen führen Operationen mit Stringwerten aus und geben entweder numerische Werte oder Stringwerte zurück.
Mit Stringfunktionen können Sie beispielsweise Daten kombinieren, einen Teilstring extrahieren, Strings vergleichen oder einen String in Groß- oder Kleinbuchstaben konvertieren.
Syntax
- CONCAT (string_value1, string_value2 [, string_valueN])
- LTRIM (Zeichenausdruck)
- RTRIM (Zeichenausdruck)
- SUBSTRING (Ausdruck, Start, Länge)
- ASCII (Zeichenausdruck)
- REPLICATE (string_expression, integer_expression)
- REVERSE (string_expression)
- UPPER (Zeichenausdruck)
- TRIM ([Zeichen FROM] Zeichenfolge)
- STRING_SPLIT (Zeichenfolge, Trennzeichen)
- STUFF (character_expression, start, length, replaceWith_expression)
- REPLACE (string_expression, string_pattern, string_replacement)
Bemerkungen
Leere Räume abschneiden
Trimmen wird verwendet, um den Schreibbereich am Anfang oder Ende der Auswahl zu entfernen
In MSSQL gibt es kein einzelnes TRIM()
SELECT LTRIM(' Hello ') --returns 'Hello '
SELECT RTRIM(' Hello ') --returns ' Hello'
SELECT LTRIM(RTRIM(' Hello ')) --returns 'Hello'
MySql und Oracle
SELECT TRIM(' Hello ') --returns 'Hello'
Verketten
In SQL (Standard ANSI / ISO) ist der Operator für die String-Verkettung ||
. Diese Syntax wird von allen wichtigen Datenbanken mit Ausnahme von SQL Server unterstützt:
SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!
Viele Datenbanken unterstützen eine CONCAT
Funktion zum Verknüpfen von Zeichenfolgen:
SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'
Einige Datenbanken unterstützen die Verwendung von CONCAT
zum Verknüpfen von mehr als zwei Zeichenfolgen (Oracle nicht):
SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'
In einigen Datenbanken müssen Nicht-String-Typen umgewandelt oder konvertiert werden:
SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'
Einige Datenbanken (z. B. Oracle) führen implizit verlustfreie Konvertierungen durch. Zum Beispiel kann ein CONCAT
auf einem CLOB
und NCLOB
ergibt eine NCLOB
. Ein CONCAT
auf einer Zahl und einem varchar2
führt zu einem varchar2
usw.
SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar
Einige Datenbanken können den Nicht-Standard-Operator +
(in den meisten +
funktioniert +
nur für Zahlen):
SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';
Auf SQL Server <2012, wo CONCAT
nicht unterstützt wird, ist +
die einzige Möglichkeit, Zeichenfolgen zu CONCAT
.
Groß- und Kleinschreibung
SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'
Unterstring
Die Syntax lautet: SUBSTRING ( string_expression, start, length )
. Beachten Sie, dass SQL-Zeichenfolgen 1-indiziert sind.
SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'
Dies wird häufig in Verbindung mit der LEN()
Funktion verwendet, um die letzten n
Zeichen einer Zeichenfolge unbekannter Länge abzurufen.
DECLARE @str1 VARCHAR(10) = 'Hello', @str2 VARCHAR(10) = 'FooBarBaz';
SELECT SUBSTRING(@str1, LEN(@str1) - 2, 3) --returns 'llo'
SELECT SUBSTRING(@str2, LEN(@str2) - 2, 3) --returns 'Baz'
Teilt
Teilt einen Zeichenfolgenausdruck mit einem Trennzeichen. Beachten Sie, dass STRING_SPLIT()
eine Tabellenwertfunktion ist.
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Ergebnis:
value
-----
Lorem
ipsum
dolor
sit
amet.
Zeug
Füllen Sie einen String in einen anderen und ersetzen Sie an einer bestimmten Position 0 oder mehr Zeichen.
Hinweis: start
Position 1-indiziert (Sie die Indizierung bei 1 beginnen, nicht 0).
Syntax:
STUFF ( character_expression , start , length , replaceWith_expression )
Beispiel:
SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'
Länge
SQL Server
Das LEN zählt das nachgestellte Leerzeichen nicht.
SELECT LEN('Hello') -- returns 5
SELECT LEN('Hello '); -- returns 5
Die DATALENGTH zählt den nachgestellten Raum.
SELECT DATALENGTH('Hello') -- returns 5
SELECT DATALENGTH('Hello '); -- returns 6
Es sei jedoch darauf hingewiesen, dass DATALENGTH die Länge der zugrunde liegenden Bytendarstellung der Zeichenfolge zurückgibt, die ua vom Zeichensatz abhängt, der zum Speichern der Zeichenfolge verwendet wird.
DECLARE @str varchar(100) = 'Hello ' --varchar is usually an ASCII string, occupying 1 byte per char
SELECT DATALENGTH(@str) -- returns 6
DECLARE @nstr nvarchar(100) = 'Hello ' --nvarchar is a unicode string, occupying 2 bytes per char
SELECT DATALENGTH(@nstr) -- returns 12
Orakel
Syntax: Länge (Zeichen)
Beispiele:
SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL
Siehe auch: Länge B, Länge C, Länge2, Länge4
Ersetzen
Syntax:
REPLACE(
String zu suchen ,
String zu suchen und ersetzen ,
String in die ursprüngliche Zeichenfolge zu platzieren )
Beispiel:
SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom
LINKS RECHTS
Syntax ist:
LEFT (Zeichenfolgenausdruck, Ganzzahl)
RECHTS (Zeichenfolgenausdruck, Ganzzahl)
SELECT LEFT('Hello',2) --return He
SELECT RIGHT('Hello',2) --return lo
Oracle SQL hat keine LINKS- und RECHTS-Funktionen. Sie können mit SUBSTR und LENGTH emuliert werden.
SUBSTR (Zeichenfolgenausdruck, 1, Ganzzahl)
SUBSTR (Zeichenfolgenausdruck, Länge (Zeichenfolgenausdruck) -Zahl + 1, Ganzzahl)
SELECT SUBSTR('Hello',1,2) --return He
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo
UMKEHREN
Syntax ist: REVERSE (Zeichenfolgenausdruck)
SELECT REVERSE('Hello') --returns olleH
ERSETZEN
Die REPLICATE
Funktion verkettet einen String mit einer angegebenen Anzahl von Malen.
Syntax ist: REPLICATE (Zeichenfolgenausdruck, Ganzzahl)
SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'
REGEXP
Überprüft, ob eine Zeichenfolge mit einem regulären Ausdruck übereinstimmt (definiert durch eine andere Zeichenfolge).
SELECT 'bedded' REGEXP '[a-f]' -- returns True
SELECT 'beam' REGEXP '[a-f]' -- returns False
Funktion in SQL-Abfrage ersetzen und aktualisieren
Mit der Replace-Funktion in SQL wird der Inhalt einer Zeichenfolge aktualisiert. Der Funktionsaufruf ist REPLACE () für MySQL, Oracle und SQL Server.
Die Syntax der Replace-Funktion lautet:
REPLACE (str, find, repl)
Das folgende Beispiel ersetzt Vorkommen von South
durch Southern
in der Tabelle "Mitarbeiter":
Vorname | Adresse |
---|---|
James | South New York |
John | South Boston |
Michael | South San Diego |
Aussage auswählen:
Wenn wir die folgende Replace-Funktion anwenden:
SELECT
FirstName,
REPLACE (Address, 'South', 'Southern') Address
FROM Employees
ORDER BY FirstName
Ergebnis:
Vorname | Adresse |
---|---|
James | Südliches New York |
John | Südliches Boston |
Michael | Südliches San Diego |
Update-Anweisung:
Wir können eine Ersetzungsfunktion verwenden, um permanente Änderungen in unserer Tabelle vorzunehmen.
Update Employees
Set city = (Address, 'South', 'Southern');
Ein üblicherer Ansatz besteht darin, dies in Verbindung mit einer WHERE-Klausel wie folgt zu verwenden:
Update Employees
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';
PARSENAME
DATENBANK : SQL Server
Die Funktion PARSENAME gibt den spezifischen Teil der angegebenen Zeichenfolge (Objektname) zurück. Objektname kann Zeichenfolge wie Objektname, Besitzername, Datenbankname und Servername enthalten.
Weitere Details MSDN: PARSENAME
Syntax
PARSENAME('NameOfStringToParse',PartIndex)
Beispiel
Um den Objektnamen zu erhalten, verwenden Sie den Teilindex 1
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1) // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1) // returns `Student`
Um den Schemanamen zu erhalten, verwenden Sie den Teilindex 2
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2) // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2) // returns `school`
Um den Datenbanknamen zu erhalten, verwenden Sie den Teilindex 3
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3) // returns `SchoolDatabase`
Um den Servernamen zu erhalten, verwenden Sie den Teilindex 4
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4) // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4) // returns `[1012-1111]`
PARSENAME gibt zurück, dass null angegeben wurde. Ein Teil ist in der angegebenen Objektnamenzeichenfolge nicht vorhanden
INSTR
Liefert den Index des ersten Vorkommens eines Teilstrings
Syntax: INSTR (Zeichenfolge, Teilzeichenfolge)
SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0