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