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

String-Funktionsreferenz für Transact-SQL / Microsoft

String-Funktionsreferenz für MySQL

String-Funktionsreferenz für PostgreSQL

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

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

MySQL 3.19

Ü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


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