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