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