I MariaDB, MID()
er et synonym for SUBSTRING()
. Det returnerer en understreng fra en given streng.
Ifølge MariaDB-dokumentationen er det et synonym for SUBSTRING(str,pos,len)
syntaks for SUBSTRING()
Men mine test viser, at det virker med alle de forskellige former.
Syntaks
Ifølge MariaDB-dokumentationen går syntaksen sådan her:
MID(str,pos,len)
Jeg har dog fundet ud af, at det virker med følgende formularer (som er de samme former som SUBSTRING()
understøtter):
MID(str,pos),
MID(str FROM pos),
MID(str,pos,len),
MID(str FROM pos FOR len)
Hvor str
er strengen, pos
er startpositionen for understrengen, og len
er antallet af tegn, der skal udtrækkes.
Eksempel
Her er et grundlæggende eksempel:
SELECT MID('Drink your beer', 7);
Resultat:
+---------------------------+ | MID('Drink your beer', 7) | +---------------------------+ | your beer | +---------------------------+
Her er det samme eksempel, men ved at bruge FROM
syntaks:
SELECT MID('Drink your beer' FROM 7);
Resultat:
+-------------------------------+ | MID('Drink your beer' FROM 7) | +-------------------------------+ | your beer | +-------------------------------+
Længde af understreng
Her er et eksempel, der specificerer længden af den understreng, der skal udtrækkes. Dette er den eneste syntaks, som MariaDB-dokumentationen citerer for MID()
funktion.
SELECT MID('Drink your beer', 7, 4);
Resultat:
+------------------------------+ | MID('Drink your beer', 7, 4) | +------------------------------+ | your | +------------------------------+
Og her bruger den FROM...FOR
syntaks:
SELECT MID('Drink your beer' FROM 7 FOR 4);
Resultat:
+-------------------------------------+ | MID('Drink your beer' FROM 7 FOR 4) | +-------------------------------------+ | your | +-------------------------------------+
Negativ position
Angivelse af en negativ værdi for positionen bevirker, at startpositionen tælles baglæns fra slutningen af strengen:
SELECT MID('Drink your beer', -9);
Resultat:
+----------------------------+ | MID('Drink your beer', -9) | +----------------------------+ | your beer | +----------------------------+
En negativ position kan også bruges, når du bruger FROM
syntaks:
SELECT MID('Drink your beer' FROM -9 FOR 4);
Resultat:
+--------------------------------------+ | MID('Drink your beer' FROM -9 FOR 4) | +--------------------------------------+ | your | +--------------------------------------+
I dette tilfælde indstiller jeg også en længde for understrengen.
Oracle-tilstand
Når du er i Oracle-tilstand, en startposition på 0
(nul) behandles som 1
. Men en startposition på 1
behandles også som 1
.
Dette er i modsætning til andre tilstande, hvor 0
returnerer en tom streng.
Eksempel:
SET SQL_MODE=ORACLE;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Resultat:
+-----------------+-----------------+ | 0 | 1 | +-----------------+-----------------+ | Drink your beer | Drink your beer | +-----------------+-----------------+
Her er den i standardtilstand:
SET SQL_MODE=DEFAULT;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Resultat:
+------+-----------------+ | 0 | 1 | +------+-----------------+ | | Drink your beer | +------+-----------------+
Nul-argumenter
Hvis nogen (eller alle) af argumenterne er null
, MID()
funktion returnerer null
:
SELECT
MID(null, 3, 3),
MID('Beer', null, 3),
MID('Beer', 3, null),
MID(null, null, null);
Resultat:
+-----------------+----------------------+----------------------+-----------------------+ | MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) | +-----------------+----------------------+----------------------+-----------------------+ | NULL | NULL | NULL | NULL | +-----------------+----------------------+----------------------+-----------------------+
Manglende argumenter
Kalder MID()
uden at sende nogen argumenter resulterer det i en fejl:
SELECT MID();
Resultat:
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