Перейти к содержимому
Последнее обновление

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 до конца строки

Примеры​

  1. Базовое использование (указание начальной позиции)
SELECT substring('abc1', 2);
+-----------------------------+
| substring('abc1', 2) |
+-----------------------------+
| bc1 |
+-----------------------------+
  1. Использование отрицательной позиции
SELECT substring('abc1', -2);
+-----------------------------+
| substring('abc1', -2) |
+-----------------------------+
| c1 |
+-----------------------------+
  1. Случай, когда позиция равна 0
SELECT substring('abc1', 0);
+----------------------+
| substring('abc1', 0) |
+----------------------+
| |
+----------------------+
  1. Позиция превышает длину строки
SELECT substring('abc1', 5);
+-----------------------------+
| substring('abc1', 5) |
+-----------------------------+
| |
+-----------------------------+
  1. Указание параметра длины
SELECT substring('abc1def', 2, 2);
+-----------------------------+
| substring('abc1def', 2, 2) |
+-----------------------------+
| bc |
+-----------------------------+
  1. Использование from и for
SELECT substring('foobarbar' FROM 4 FOR 3);
+-------------------------------------+
| substring('foobarbar' FROM 4 FOR 3) |
+-------------------------------------+
| bar |
+-------------------------------------+
  1. Использование from
SELECT substring('foobarbar' FROM 4);
+-------------------------------+
| substring('foobarbar' FROM 4) |
+-------------------------------+
| barbar |
+-------------------------------+
  1. Пример с NULL и псевдонимом MID
SELECT MID(NULL, 2);
+--------------+
| MID(NULL, 2) |
+--------------+
| NULL |
+--------------+
  1. Использование псевдонима SUBSTR
SELECT SUBSTR('Hello World', 7, 5);
+------------------------------+
| SUBSTR('Hello World', 7, 5) |
+------------------------------+
| World |
+------------------------------+
  1. Многобайтовые символы UTF-8
SELECT SUBSTRING('ṭṛì ḍḍumai hello', 5, 6);
+--------------------------------------+
| SUBSTRING('ṭṛì ḍḍumai hello', 5, 6) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+
  1. Пустая исходная строка
SELECT substring('', 1, 3);
+---------------------+
| substring('', 1, 3) |
+---------------------+
| |
+---------------------+
  1. Передача NULL непосредственно в substring (случай с псевдонимом MID приведён в примере 8)
SELECT substring(NULL, 1, 3);
+-----------------------+
| substring(NULL, 1, 3) |
+-----------------------+
| NULL |
+-----------------------+

Ключевые слова​

SUBSTRING, SUBSTR, MID