В MariaDB, SUBSTRING() е вградена функция за низ, която връща подниз от даден низ.
SUBSTRING() изисква поне два аргумента; низа и позицията, от която да се извлече поднизът. Той също така приема незадължителен трети аргумент, който ви позволява да укажете колко дълъг трябва да бъде поднизът.
Синтаксис
Синтаксисът приема следните форми:
SUBSTRING(str,pos),
SUBSTRING(str FROM pos),
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)
Където str е низът, pos е началната позиция на подниза и len е броят на знаците за извличане.
Двете формуляри, които използват FROM ключови думи са стандартен SQL синтаксис.
Пример
Ето един основен пример:
SELECT SUBSTRING('Big fat cat', 5); Резултат:
+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat |
+-----------------------------+ Ето същия пример, но използвайки стандартния SQL синтаксис:
SELECT SUBSTRING('Big fat cat' FROM 5); Резултат:
+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat |
+---------------------------------+ Дължина на подниз
Ето пример, който определя дължината на подниз за извличане:
SELECT SUBSTRING('Big fat cat', 5, 3); Резултат:
+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat |
+--------------------------------+ И тук използва стандартен SQL синтаксис:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3); Резултат:
+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat |
+---------------------------------------+ Отрицателна позиция
Посочването на отрицателна стойност за позицията кара началната позиция да се брои назад от края на низа:
SELECT SUBSTRING('Big fat cat', -3); Резултат:
+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat |
+------------------------------+ Отрицателна позиция може да се използва и при използване на стандартния SQL синтаксис:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3); Резултат:
+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat |
+----------------------------------------+ В този случай задавам и дължина за подниз.
Режим Oracle
Когато сте в режим на Oracle, начална позиция е 0 (нула) се третира като 1 . Въпреки това, начална позиция е 1 също се третира като 1 .
Това е в контраст с други режими, където 0 ще върне празен низ.
Пример:
SET SQL_MODE=ORACLE;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Резултат:
+-------------+-------------+ | 0 | 1 | +-------------+-------------+ | Big fat cat | Big fat cat | +-------------+-------------+
Ето го в режим по подразбиране:
SET SQL_MODE=DEFAULT;
SELECT
SUBSTRING('Big fat cat', 0) AS "0",
SUBSTRING('Big fat cat', 1) AS "1"; Резултат:
+------+-------------+ | 0 | 1 | +------+-------------+ | | Big fat cat | +------+-------------+
Нулеви аргументи
Ако някой (или всички) от аргументите са null , SUBSTRING() функцията връща null :
SELECT
SUBSTRING(null, 3, 3),
SUBSTRING('Coffee', null, 3),
SUBSTRING('Coffee', 3, null),
SUBSTRING(null, null, null); Резултат:
+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL | NULL | NULL | NULL |
+-----------------------+------------------------------+------------------------------+-----------------------------+ Липсващи аргументи
Извикване на SUBSTRING() без подаване на аргументи води до грешка:
SELECT SUBSTRING(); Резултат:
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