W MariaDB SUBSTR() jest synonimem SUBSTRING() .
Jest to wbudowana funkcja ciągów znaków, która zwraca podciąg z podanego ciągu.
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:
SUBSTR(str,pos),
SUBSTR(str FROM pos),
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6); Wynik:
+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy |
+-------------------------+ Oto ten sam przykład, ale przy użyciu standardowej składni SQL:
SELECT SUBSTR('Good doggy' FROM 6); Wynik:
+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy |
+-----------------------------+ Długość podciągu
Oto przykład określający długość podciągu do wyodrębnienia:
SELECT SUBSTR('Good doggy', 6, 3); Wynik:
+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog |
+----------------------------+ A tutaj używa standardowej składni SQL:
SELECT SUBSTR('Good doggy' FROM 6 FOR 3); Wynik:
+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog |
+-----------------------------------+ Pozycja ujemna
Określenie ujemnej wartości pozycji powoduje, że pozycja początkowa jest liczona wstecz od końca ciągu:
SELECT SUBSTR('Good doggy', -5); Wynik:
+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy |
+--------------------------+ Pozycja ujemna może być również użyta przy użyciu standardowej składni SQL:
SELECT SUBSTR('Good doggy' FROM -5 FOR 3); Wynik:
+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog |
+------------------------------------+ 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
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1"; Wynik:
+------------+------------+ | 0 | 1 | +------------+------------+ | Good doggy | Good doggy | +------------+------------+
Oto tryb domyślny:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTR('Good doggy', 0) AS "0",
SUBSTR('Good doggy', 1) AS "1"; Wynik:
+------+------------+ | 0 | 1 | +------+------------+ | | Good doggy | +------+------------+
Argumenty zerowe
Jeśli którykolwiek (lub wszystkie) argumenty są null , SUBSTR() funkcja zwraca null :
SELECT
SUBSTR(null, 3, 3),
SUBSTR('Doggy', null, 3),
SUBSTR('Doggy', 3, null),
SUBSTR(null, null, null); Wynik:
+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL | NULL | NULL | NULL |
+--------------------+--------------------------+--------------------------+--------------------------+ Brakujące argumenty
Wywołanie SUBSTR() bez przekazania żadnych argumentów powoduje błąd:
SELECT SUBSTR(); 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