sql >> Databáze >  >> RDS >> MariaDB

Jak MID() funguje v MariaDB

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

  1. Rekurzivní dotaz používaný pro tranzitivní uzávěr

  2. Jak odebrat primární klíč v SQL

  3. SQL Server 2016:Zálohování databáze

  4. NOW() Příklady – MySQL