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

Jak SUBSTRING_INDEX() funguje v MariaDB

V MariaDB, SUBSTRING_INDEX() je vestavěná funkce řetězce. Vrací podřetězec z řetězce před určitým počtem výskytů zadaného oddělovače.

SUBSTRING_INDEX() vyžaduje tři argumenty; řetězec, oddělovač a počet (tj. počet výskytů tohoto oddělovače).

Syntaxe

Syntaxe vypadá takto:

SUBSTRING_INDEX(str,delim,count)

Kde str je řetězec delim je oddělovač a count je počet výskytů tohoto oddělovače, který se má použít pro určení podřetězce, který se má vrátit.

Pokud count je kladné, vrátí se vše nalevo od konečného oddělovače (počítáno zleva). Pokud count je záporné, vrátí se vše napravo od posledního oddělovače (počítáno zprava).

Příklad

Zde je základní příklad:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3);

Výsledek:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', 3) |
+-------------------------------------------------------+
| /users/homer                                          |
+-------------------------------------------------------+

Záporný počet

Zadání záporné hodnoty počtu způsobí, že se bude počítat zpětně od konce řetězce:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3);

Výsledek:

+--------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', -3) |
+--------------------------------------------------------+
| homer/docs/cat_vids                                    |
+--------------------------------------------------------+

Oddělovač nenalezen

Pokud oddělovač v řetězci neexistuje, vrátí se celý řetězec:

SELECT SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3);

Výsledek:

+-------------------------------------------------------+
| SUBSTRING_INDEX('/users/homer/docs/cat_vids', '.', 3) |
+-------------------------------------------------------+
| /users/homer/docs/cat_vids                            |
+-------------------------------------------------------+

Nulové argumenty

Pokud jsou některé (nebo všechny) argumenty null , SUBSTRING_INDEX() funkce vrací null :

SELECT 
    SUBSTRING_INDEX(null, '/', 3) AS "1",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', null, 3) AS "2",
    SUBSTRING_INDEX('/users/homer/docs/cat_vids', '/', null) AS "3",
    SUBSTRING_INDEX(null, null, null) AS "4";

Výsledek:

+------+------+------+------+
| 1    | 2    | 3    | 4    |
+------+------+------+------+
| NULL | NULL | NULL | NULL |
+------+------+------+------+

Chybí argumenty

Volání SUBSTRING_INDEX() bez předání jakýchkoli argumentů dojde k chybě:

SELECT SUBSTRING_INDEX();

Výsledek:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SUBSTRING_INDEX'

  1. Lepší ALTER než DROP

  2. Databáze:Zřetězené funkce

  3. Jak implementovat priority v SQL (postgres)

  4. Jaký je rozdíl mezi použitím křížového spojení a vložením čárky mezi dvě tabulky?