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

MariaDB SUBSTR() erklärt

In MariaDB SUBSTR() ist ein Synonym für SUBSTRING() .

Es ist eine eingebaute String-Funktion, die einen Teilstring aus einem gegebenen String zurückgibt.

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

SUBSTR(str,pos), 
SUBSTR(str FROM pos), 
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6);

Ergebnis:

+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy                   |
+-------------------------+

Hier ist das gleiche Beispiel, aber mit der Standard-SQL-Syntax:

SELECT SUBSTR('Good doggy' FROM 6);

Ergebnis:

+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy                       |
+-----------------------------+

Teilstringlänge

Hier ist ein Beispiel, das die Länge der zu extrahierenden Teilzeichenfolge angibt:

SELECT SUBSTR('Good doggy', 6, 3);

Ergebnis:

+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog                        |
+----------------------------+

Und hier wird die Standard-SQL-Syntax verwendet:

SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

Ergebnis:

+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog                               |
+-----------------------------------+

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 SUBSTR('Good doggy', -5);

Ergebnis:

+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy                    |
+--------------------------+

Bei Verwendung der Standard-SQL-Syntax kann auch eine negative Position verwendet werden:

SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

Ergebnis:

+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog                                |
+------------------------------------+

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 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Ergebnis:

+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

Hier ist es im Standardmodus:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Ergebnis:

+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

Null-Argumente

Wenn eines (oder alle) Argumente null sind , der SUBSTR() Funktion gibt null zurück :

SELECT 
    SUBSTR(null, 3, 3),
    SUBSTR('Doggy', null, 3),
    SUBSTR('Doggy', 3, null),
    SUBSTR(null, null, null);

Ergebnis:

+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL               | NULL                     | NULL                     | NULL                     |
+--------------------+--------------------------+--------------------------+--------------------------+

Fehlende Argumente

Aufruf von SUBSTR() ohne Übergabe von Argumenten ergibt sich ein Fehler:

SELECT SUBSTR();

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