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

Jak SUBSTRING() funguje v MariaDB

V MariaDB, SUBSTRING() je vestavěná řetězcová funkce, která vrací podřetězec z daného řetězce.

SUBSTRING() vyžaduje alespoň dva argumenty; řetězec a pozici, ze které se má podřetězec extrahovat. Přijímá také volitelný třetí argument, který vám umožňuje určit, jak dlouhý má být podřetězec.

Syntaxe

Syntaxe má následující tvary:

SUBSTRING(str,pos), 
SUBSTRING(str FROM pos), 
SUBSTRING(str,pos,len),
SUBSTRING(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.

Dva formuláře, které používají FROM klíčová slova jsou standardní syntaxí SQL.

Příklad

Zde je základní příklad:

SELECT SUBSTRING('Big fat cat', 5);

Výsledek:

+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat                     |
+-----------------------------+

Zde je stejný příklad, ale s použitím standardní syntaxe SQL:

SELECT SUBSTRING('Big fat cat' FROM 5);

Výsledek:

+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat                         |
+---------------------------------+

Délka podřetězce

Zde je příklad, který určuje délku podřetězce k extrahování:

SELECT SUBSTRING('Big fat cat', 5, 3);

Výsledek:

+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat                            |
+--------------------------------+

A zde používá standardní syntaxi SQL:

SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

Výsledek:

+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat                                   |
+---------------------------------------+

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 SUBSTRING('Big fat cat', -3);

Výsledek:

+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat                          |
+------------------------------+

Zápornou pozici lze také použít při použití standardní syntaxe SQL:

SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

Výsledek:

+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat                                    |
+----------------------------------------+

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 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Výsledek:

+-------------+-------------+
| 0           | 1           |
+-------------+-------------+
| Big fat cat | Big fat cat |
+-------------+-------------+

Zde je ve výchozím režimu:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Výsledek:

+------+-------------+
| 0    | 1           |
+------+-------------+
|      | Big fat cat |
+------+-------------+

Nulové argumenty

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

SELECT 
    SUBSTRING(null, 3, 3),
    SUBSTRING('Coffee', null, 3),
    SUBSTRING('Coffee', 3, null),
    SUBSTRING(null, null, null);

Výsledek:

+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL                  | NULL                         | NULL                         | NULL                        |
+-----------------------+------------------------------+------------------------------+-----------------------------+

Chybí argumenty

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

SELECT SUBSTRING();

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. Jak importovat data souboru CSV do tabulky PostgreSQL?

  2. Jak provést operaci obnovení při selhání pro nastavení replikace MySQL

  3. Jak extrahovat dvě po sobě jdoucí číslice z textového pole v MySQL?

  4. PostgreSQL na vzestupu:2018 Postgres Findings &2019 Trends