V MariaDB, MID()
je synonymem pro SUBSTRING()
. Vrací podřetězec z daného řetězce.
Podle dokumentace MariaDB je to synonymum pro SUBSTRING(str,pos,len)
syntaxe SUBSTRING()
mé testy však ukazují, že funguje se všemi různými formami.
Syntaxe
Podle dokumentace MariaDB vypadá syntaxe takto:
MID(str,pos,len)
Zjistil jsem však, že to funguje s následujícími formuláři (což jsou stejné formuláře jako SUBSTRING()
podporuje):
MID(str,pos),
MID(str FROM pos),
MID(str,pos,len),
MID(str FROM pos FOR len)
Kde str
je řetězec, pos
je počáteční pozice podřetězce a len
je počet znaků k extrakci.
Příklad
Zde je základní příklad:
SELECT MID('Drink your beer', 7);
Výsledek:
+---------------------------+ | MID('Drink your beer', 7) | +---------------------------+ | your beer | +---------------------------+
Zde je stejný příklad, ale s použitím FROM
syntaxe:
SELECT MID('Drink your beer' FROM 7);
Výsledek:
+-------------------------------+ | MID('Drink your beer' FROM 7) | +-------------------------------+ | your beer | +-------------------------------+
Délka podřetězce
Zde je příklad, který určuje délku podřetězce k extrahování. Toto je jediná syntaxe, kterou dokumentace MariaDB cituje pro MID()
funkce.
SELECT MID('Drink your beer', 7, 4);
Výsledek:
+------------------------------+ | MID('Drink your beer', 7, 4) | +------------------------------+ | your | +------------------------------+
A zde je to pomocí FROM...FOR
syntaxe:
SELECT MID('Drink your beer' FROM 7 FOR 4);
Výsledek:
+-------------------------------------+ | MID('Drink your beer' FROM 7 FOR 4) | +-------------------------------------+ | your | +-------------------------------------+
Záporná pozice
Zadání záporné hodnoty pro pozici způsobí, že počáteční pozice bude počítána zpětně od konce řetězce:
SELECT MID('Drink your beer', -9);
Výsledek:
+----------------------------+ | MID('Drink your beer', -9) | +----------------------------+ | your beer | +----------------------------+
Při použití FROM
lze také použít zápornou pozici syntaxe:
SELECT MID('Drink your beer' FROM -9 FOR 4);
Výsledek:
+--------------------------------------+ | MID('Drink your beer' FROM -9 FOR 4) | +--------------------------------------+ | your | +--------------------------------------+
V tomto případě jsem také nastavil délku podřetězce.
Režim Oracle
V režimu Oracle je počáteční pozice 0
(nula) se považuje za 1
. Počáteční pozice však 1
je také považováno za 1
.
To je na rozdíl od jiných režimů, kde 0
vrátí prázdný řetězec.
Příklad:
SET SQL_MODE=ORACLE;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Výsledek:
+-----------------+-----------------+ | 0 | 1 | +-----------------+-----------------+ | Drink your beer | Drink your beer | +-----------------+-----------------+
Zde je ve výchozím režimu:
SET SQL_MODE=DEFAULT;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Výsledek:
+------+-----------------+ | 0 | 1 | +------+-----------------+ | | Drink your beer | +------+-----------------+
Nulové argumenty
Pokud jsou některé (nebo všechny) argumenty null
, MID()
funkce vrací null
:
SELECT
MID(null, 3, 3),
MID('Beer', null, 3),
MID('Beer', 3, null),
MID(null, null, null);
Výsledek:
+-----------------+----------------------+----------------------+-----------------------+ | MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) | +-----------------+----------------------+----------------------+-----------------------+ | NULL | NULL | NULL | NULL | +-----------------+----------------------+----------------------+-----------------------+
Chybí argumenty
Volání MID()
bez předání jakýchkoli argumentů dojde k chybě:
SELECT MID();
Výsledek:
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