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

Wie MID() in MariaDB funktioniert

In MariaDB, MID() ist ein Synonym für SUBSTRING() . Es gibt einen Teilstring aus einem gegebenen String zurück.

Laut MariaDB-Dokumentation ist es ein Synonym für SUBSTRING(str,pos,len) Syntax von SUBSTRING() , meine Tests zeigen jedoch, dass es mit allen verschiedenen Formularen funktioniert.

Syntax

Laut der MariaDB-Dokumentation lautet die Syntax wie folgt:

MID(str,pos,len) 

Ich habe jedoch festgestellt, dass es mit den folgenden Formularen funktioniert (das sind die gleichen Formulare wie SUBSTRING() unterstützt):

MID(str,pos), 
MID(str FROM pos), 
MID(str,pos,len),
MID(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.

Beispiel

Hier ist ein einfaches Beispiel:

SELECT MID('Drink your beer', 7); 

Ergebnis:

+-----------------------------------+| MID('Trink dein Bier', 7) |+-----------------------------------+| Dein Bier |+-----------------------------------+

Hier ist das gleiche Beispiel, aber mit FROM Syntax:

SELECT MID('Drink your beer' FROM 7); 

Ergebnis:

+-------------------------------+| MID('Trink dein Bier' AB 7) |+------------------------------+| Dein Bier |+------------------------------+

Teilstringlänge

Hier ist ein Beispiel, das die Länge der zu extrahierenden Teilzeichenfolge angibt. Dies ist die einzige Syntax, die die MariaDB-Dokumentation für MID() zitiert Funktion.

SELECT MID('Drink your beer', 7, 4); 

Ergebnis:

+------------------------------+| MID('Trink dein Bier', 7, 4) |+------------------------------+| Ihr |+------------------------------+

Und hier wird FROM...FOR verwendet Syntax:

SELECT MID('Drink your beer' FROM 7 FOR 4); 

Ergebnis:

+-------------------------------------+| MID('Trink dein Bier' VON 7 FÜR 4) |+------------------------------------ -+| Ihr |+-------------------------------------+

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 MID('Drink your beer', -9); 

Ergebnis:

+-----------------------------------+| MID('Trink dein Bier', -9) |+-----------------------------------+| dein Bier |+-----------------------------------+

Bei Verwendung von FROM kann auch eine negative Position verwendet werden Syntax:

SELECT MID('Drink your beer' FROM -9 FOR 4); 

Ergebnis:

+--------------------------------------+| MID('Trink dein Bier' VON -9 FÜR 4) |+----------------------------------- ---+| Ihr |+---------------------------------------------------+

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 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1"; 

Ergebnis:

+-----------------+-----------------+| 0 | 1 |+----------------+----------------+| Trink dein Bier | Trink dein Bier |+----------------+----------------+

Hier ist es im Standardmodus:

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1"; 

Ergebnis:

+------+----------------+| 0 | 1 |+------+-----------------+| | Trink dein Bier |+------+----------------+

Null-Argumente

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

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null); 

Ergebnis:

+------------+----------------------+----- -------------+-----------------------+| MID(Null, 3, 3) | MID('Bier', null, 3) | MID('Bier', 3, null) | MID(null, null, null) |+------------+--------------------- +----------------------+-----------------------+| NULL | NULL | NULL | NULL |+------------+---------------------+------ -----------+-----------------------+

Fehlende Argumente

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

SELECT MID(); 

Ergebnis:

ERROR 1064 (42000):Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax, um sie in der Nähe von ')' in Zeile 1 zu verwenden