Последнее обновление
SUBSTRING
Описание
Функция SUBSTRING извлекает подстроку из строки. Можно указать начальную позицию и длину; поддерживается извлечение в прямом и обратном направлении. Позиция первого символа в строке — 1.
Псевдонимы
SUBSTR
MID
Синтаксис
SUBSTRING(<str>, <pos> [, <len>])
SUBSTRING(<str> FROM <pos> [FOR <len>])
Параметры
| Параметр | Описание |
|---|---|
<str> | Исходная строка. Тип: VARCHAR |
<pos> | Начальная позиция, может быть отрицательной. Тип: INT |
<len> | Необязательный параметр: длина извлекаемой подстроки. Тип: INT |
Возвращаемое значение
Возвращает значение типа VARCHAR, представляющее извлечённую подстроку.
Особые случаи:
- Если любой из параметров равен NULL, возвращает NULL
- Если pos равен 0, возвращает пустую строку
- Если pos отрицателен, отсчёт ведётся от конца строки к началу
- Если pos превышает длину строки, возвращает пустую строку
- Если len не указан, возвращает все символы от позиции pos до конца строки
Примеры
- Базовое использование (указание начальной позиции)
SELECT substring('abc1', 2);
+-----------------------------+
| substring('abc1', 2) |
+-----------------------------+
| bc1 |
+-----------------------------+
- Использование отрицательной позиции
SELECT substring('abc1', -2);
+-----------------------------+
| substring('abc1', -2) |
+-----------------------------+
| c1 |
+-----------------------------+
- Случай, когда позиция равна 0
SELECT substring('abc1', 0);
+----------------------+
| substring('abc1', 0) |
+----------------------+
| |
+----------------------+
- Позиция превышает длину строки
SELECT substring('abc1', 5);
+-----------------------------+
| substring('abc1', 5) |
+-----------------------------+
| |
+-----------------------------+
- Указание параметра длины
SELECT substring('abc1def', 2, 2);
+-----------------------------+
| substring('abc1def', 2, 2) |
+-----------------------------+
| bc |
+-----------------------------+
- Использование from и for
SELECT substring('foobarbar' FROM 4 FOR 3);
+-------------------------------------+
| substring('foobarbar' FROM 4 FOR 3) |
+-------------------------------------+
| bar |
+-------------------------------------+
- Использование from
SELECT substring('foobarbar' FROM 4);
+-------------------------------+
| substring('foobarbar' FROM 4) |
+-------------------------------+
| barbar |
+-------------------------------+
- Пример с NULL и псевдонимом MID
SELECT MID(NULL, 2);
+--------------+
| MID(NULL, 2) |
+--------------+
| NULL |
+--------------+
- Использование псевдонима SUBSTR
SELECT SUBSTR('Hello World', 7, 5);
+------------------------------+
| SUBSTR('Hello World', 7, 5) |
+------------------------------+
| World |
+------------------------------+
- Многобайтовые символы UTF-8
SELECT SUBSTRING('ṭṛì ḍḍumai hello', 5, 6);
+--------------------------------------+
| SUBSTRING('ṭṛì ḍḍumai hello', 5, 6) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
- Пустая исходная строка
SELECT substring('', 1, 3);
+---------------------+
| substring('', 1, 3) |
+---------------------+
| |
+---------------------+
- Передача NULL непосредственно в
substring(случай с псевдонимомMIDприведён в примере 8)
SELECT substring(NULL, 1, 3);
+-----------------------+
| substring(NULL, 1, 3) |
+-----------------------+
| NULL |
+-----------------------+
Ключевые слова
SUBSTRING, SUBSTR, MID