In MariaDB, SUBSTRING()
ist eine eingebaute String-Funktion, die einen Teilstring aus einem gegebenen String zurückgibt.
SUBSTRING()
erfordert mindestens zwei Argumente; die Zeichenfolge und die Position, aus der die Teilzeichenfolge extrahiert werden soll. Es akzeptiert auch ein optionales drittes Argument, mit dem Sie angeben können, wie lang der Teilstring sein soll.
Syntax
Die Syntax nimmt die folgenden Formen an:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
Wobei str
ist die Zeichenfolge, pos
ist die Startposition des Teilstrings und len
ist die Anzahl der zu extrahierenden Zeichen.
Die beiden Formen, die den FROM
verwenden Schlüsselwort sind Standard-SQL-Syntax.
Beispiel
Hier ist ein einfaches Beispiel:
SELECT SUBSTRING('Big fat cat', 5);
Ergebnis:
+-----------------------------+ | SUBSTRING('Big fat cat', 5) | +-----------------------------+ | fat cat | +-----------------------------+
Hier ist das gleiche Beispiel, aber mit der Standard-SQL-Syntax:
SELECT SUBSTRING('Big fat cat' FROM 5);
Ergebnis:
+---------------------------------+ | SUBSTRING('Big fat cat' FROM 5) | +---------------------------------+ | fat cat | +---------------------------------+
Teilstringlänge
Hier ist ein Beispiel, das die Länge der zu extrahierenden Teilzeichenfolge angibt:
SELECT SUBSTRING('Big fat cat', 5, 3);
Ergebnis:
+--------------------------------+ | SUBSTRING('Big fat cat', 5, 3) | +--------------------------------+ | fat | +--------------------------------+
Und hier wird die Standard-SQL-Syntax verwendet:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);
Ergebnis:
+---------------------------------------+ | SUBSTRING('Big fat cat' FROM 5 FOR 3) | +---------------------------------------+ | fat | +---------------------------------------+
Negative Position
Die Angabe eines negativen Wertes für die Position bewirkt, dass die Startposition vom Ende des Strings rückwärts gezählt wird:
SELECT SUBSTRING('Big fat cat', -3);
Ergebnis:
+------------------------------+ | SUBSTRING('Big fat cat', -3) | +------------------------------+ | cat | +------------------------------+
Bei Verwendung der Standard-SQL-Syntax kann auch eine negative Position verwendet werden:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);
Ergebnis:
+----------------------------------------+ | SUBSTRING('Big fat cat' FROM -7 FOR 3) | +----------------------------------------+ | fat | +----------------------------------------+
In diesem Fall lege ich auch eine Länge für den Teilstring fest.
Oracle-Modus
Im Oracle-Modus eine Startposition von 0
(Null) wird als 1
behandelt . Jedoch eine Startposition von 1
wird auch als 1
behandelt .
Dies steht im Gegensatz zu anderen Modi, in denen 0
gibt einen leeren String zurück.
Beispiel:
SET SQL_MODE=ORACLE;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Ergebnis:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Hier ist es im Standardmodus:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1";
Ergebnis:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Null-Argumente
Wenn eines (oder alle) Argumente null
sind , der SUBSTRING()
Funktion gibt null
zurück :
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null);
Ergebnis:
+-----------------------+------------------------------+------------------------------+-----------------------------+ | SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) | +-----------------------+------------------------------+------------------------------+-----------------------------+ | NULL | NULL | NULL | NULL | +-----------------------+------------------------------+------------------------------+-----------------------------+
Fehlende Argumente
Aufruf von SUBSTRING()
ohne Argumente zu übergeben führt zu einem Fehler:
SELECT SUBSTRING();
Ergebnis:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1