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