MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie SUBSTRING() in MariaDB funktioniert

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