SUBSTRING
Синтаксис
SUBSTRING(str,pos), SUBSTRING(str FROM pos), SUBSTRING(str,pos,len), SUBSTRING(str FROM pos FOR len) SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len)
Описание
Формы без аргумента len возвращают подстроку из строки str, начиная с позиции pos.
Формы с аргументом len возвращают подстроку длиной len символов из строки str, начиная с позиции pos.
Формы, использующие FROM, соответствуют стандартному синтаксису SQL.
Также можно использовать отрицательное значение для pos. В этом случае начало подстроки определяется как позиция, отстоящая на pos символов от конца строки, а не от начала. Отрицательное значение может быть использовано для pos в любой форме этой функции.
По умолчанию позиция первого символа в строке, с которого извлекается подстрока, считается равной 1. Для совместимости с Oracle, начиная с MariaDB 10.3.3, когда sql_mode установлен в 'oracle', позиция ноль обрабатывается как позиция 1 (хотя первый символ всё равно считается с позиции 1).
Если какой-либо аргумент NULL, возвращается NULL.
Примеры
SELECT SUBSTRING('Knowledgebase',5);
+------------------------------+
| SUBSTRING('Knowledgebase',5) |
+------------------------------+
| ledgebase |
+------------------------------+
SELECT SUBSTRING('MariaDB' FROM 6);
+-----------------------------+
| SUBSTRING('MariaDB' FROM 6) |
+-----------------------------+
| DB |
+-----------------------------+
SELECT SUBSTRING('Knowledgebase',3,7);
+--------------------------------+
| SUBSTRING('Knowledgebase',3,7) |
+--------------------------------+
| owledge |
+--------------------------------+
SELECT SUBSTRING('Knowledgebase', -4);
+--------------------------------+
| SUBSTRING('Knowledgebase', -4) |
+--------------------------------+
| base |
+--------------------------------+
SELECT SUBSTRING('Knowledgebase', -8, 4);
+-----------------------------------+
| SUBSTRING('Knowledgebase', -8, 4) |
+-----------------------------------+
| edge |
+-----------------------------------+
SELECT SUBSTRING('Knowledgebase' FROM -8 FOR 4);
+------------------------------------------+
| SUBSTRING('Knowledgebase' FROM -8 FOR 4) |
+------------------------------------------+
| edge |
+------------------------------------------+
Режим Oracle от MariaDB 10.3.3:
SELECT SUBSTR('abc',0,3);
+-------------------+
| SUBSTR('abc',0,3) |
+-------------------+
| |
+-------------------+
SELECT SUBSTR('abc',1,2);
+-------------------+
| SUBSTR('abc',1,2) |
+-------------------+
| ab |
+-------------------+
SET sql_mode='oracle';
SELECT SUBSTR('abc',0,3);
+-------------------+
| SUBSTR('abc',0,3) |
+-------------------+
| abc |
+-------------------+
SELECT SUBSTR('abc',1,2);
+-------------------+
| SUBSTR('abc',1,2) |
+-------------------+
| ab |
+-------------------+
См. также
- INSTR() - Возвращает позицию строки внутри строки
- LOCATE() - Возвращает позицию строки внутри строки
- SUBSTRING_INDEX() - Возвращает строку, основанную на подстроке
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/substring/