W MariaDB, SUBSTRING() jest wbudowaną funkcją ciągu, która zwraca podciąg z podanego ciągu.
SUBSTRING() wymaga co najmniej dwóch argumentów; ciąg i pozycję, z której należy wyodrębnić podciąg. Akceptuje również opcjonalny trzeci argument, który pozwala określić, jak długi powinien być podciąg.
Składnia
Składnia przyjmuje następujące formy:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
Gdzie str jest ciągiem, pos jest pozycją początkową podciągu, a len to liczba znaków do wyodrębnienia.
Dwie formy, które używają FROM słowa kluczowe są standardową składnią SQL.
Przykład
Oto podstawowy przykład:
SELECT SUBSTRING('Big fat cat', 5); Wynik:
+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat |
+-----------------------------+ Oto ten sam przykład, ale przy użyciu standardowej składni SQL:
SELECT SUBSTRING('Big fat cat' FROM 5); Wynik:
+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat |
+---------------------------------+ Długość podciągu
Oto przykład określający długość podciągu do wyodrębnienia:
SELECT SUBSTRING('Big fat cat', 5, 3); Wynik:
+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat |
+--------------------------------+ A tutaj używa standardowej składni SQL:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3); Wynik:
+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat |
+---------------------------------------+ Pozycja ujemna
Określenie ujemnej wartości pozycji powoduje, że pozycja początkowa jest liczona wstecz od końca ciągu:
SELECT SUBSTRING('Big fat cat', -3); Wynik:
+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat |
+------------------------------+ Pozycja ujemna może być również użyta przy użyciu standardowej składni SQL:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3); Wynik:
+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat |
+----------------------------------------+ W tym przypadku również ustawiłem długość podłańcucha.
Tryb Oracle
W trybie Oracle pozycja początkowa 0 (zero) jest traktowane jako 1 . Jednak pozycja początkowa 1 jest również traktowany jako 1 .
Jest to w przeciwieństwie do innych trybów, w których 0 zwróci pusty ciąg.
Przykład:
SET SQL_MODE=ORACLE;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Wynik:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Oto tryb domyślny:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Wynik:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Argumenty zerowe
Jeśli którykolwiek (lub wszystkie) argumenty są null , SUBSTRING() funkcja zwraca null :
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null); Wynik:
+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL | NULL | NULL | NULL |
+-----------------------+------------------------------+------------------------------+-----------------------------+ Brakujące argumenty
Wywołanie SUBSTRING() bez przekazania żadnych argumentów powoduje błąd:
SELECT SUBSTRING(); Wynik:
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