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

SPLIT_PART

Описание​

Функция SPLIT_PART разбивает строку на несколько частей по указанному разделителю и возвращает одну из них.

Синтаксис​

SPLIT_PART ( <str>, <separator>, <part_index> )

Параметры​

ПараметрОписание
<str>Строка, которую нужно разделить
<separator>Строка, используемая в качестве разделителя
<part_index>Индекс возвращаемой части. Нумерация начинается с 1

Возвращаемое значение​

Возвращает указанную часть строки, разбитой по разделителю. Особые случаи:

  • Если любой из параметров равен NULL, возвращается NULL.
  • Если <part_index> равен 0, возвращается NULL.
  • Если <part_index> выходит за допустимые границы, возвращается NULL.

Примеры​

  1. Простое разделение строки
SELECT SPLIT_PART('hello world', ' ', 1);
+----------------------------------+
| SPLIT_PART('hello world', ' ', 1) |
+----------------------------------+
| hello |
+----------------------------------+
  1. Получение второй части
SELECT SPLIT_PART('apple,banana,cherry', ',', 2);
+-------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', 2) |
+-------------------------------------------+
| banana |
+-------------------------------------------+
  1. Индекс равен 0 (возвращается NULL)
SELECT SPLIT_PART('apple,banana,cherry', ',', 0);
+-------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', 0) |
+-------------------------------------------+
| NULL |
+-------------------------------------------+
  1. Отрицательный индекс (отсчёт с конца)
SELECT SPLIT_PART('apple,banana,cherry', ',', -1), SPLIT_PART('apple,banana,cherry', ',', -2);
+--------------------------------------------+--------------------------------------------+
| SPLIT_PART('apple,banana,cherry', ',', -1) | SPLIT_PART('apple,banana,cherry', ',', -2) |
+--------------------------------------------+--------------------------------------------+
| cherry | banana |
+--------------------------------------------+--------------------------------------------+
  1. Индекс за пределами допустимого диапазона
SELECT SPLIT_PART('apple,banana', ',', 5), SPLIT_PART('apple,banana', ',', -5);
+------------------------------------+-------------------------------------+
| SPLIT_PART('apple,banana', ',', 5) | SPLIT_PART('apple,banana', ',', -5) |
+------------------------------------+-------------------------------------+
| NULL | NULL |
+------------------------------------+-------------------------------------+
  1. Обработка значений NULL
SELECT SPLIT_PART(NULL, ',', 1), SPLIT_PART('test', NULL, 1), SPLIT_PART('test', ',', NULL);
+---------------------------+-----------------------------+-------------------------------+
| SPLIT_PART(NULL, ',', 1) | SPLIT_PART('test', NULL, 1) | SPLIT_PART('test', ',', NULL) |
+---------------------------+-----------------------------+-------------------------------+
| NULL | NULL | NULL |
+---------------------------+-----------------------------+-------------------------------+
  1. Обработка пустых строк
SELECT SPLIT_PART('', ',', 1), SPLIT_PART('test', '', 2);
+------------------------+---------------------------+
| SPLIT_PART('', ',', 1) | SPLIT_PART('test', '', 2) |
+------------------------+---------------------------+
| NULL | |
+------------------------+---------------------------+
  1. Разделитель отсутствует
SELECT SPLIT_PART('hello world', '|', 1), SPLIT_PART('hello world', '|', 2);
+-----------------------------------+-----------------------------------+
| SPLIT_PART('hello world', '|', 1) | SPLIT_PART('hello world', '|', 2) |
+-----------------------------------+-----------------------------------+
| NULL | NULL |
+-----------------------------------+-----------------------------------+
  1. Последовательные разделители
SELECT SPLIT_PART('a,,c', ',', 1), SPLIT_PART('a,,c', ',', 2), SPLIT_PART('a,,c', ',', 3);
+----------------------------+----------------------------+----------------------------+
| SPLIT_PART('a,,c', ',', 1) | SPLIT_PART('a,,c', ',', 2) | SPLIT_PART('a,,c', ',', 3) |
+----------------------------+----------------------------+----------------------------+
| a | | c |
+----------------------------+----------------------------+----------------------------+
  1. Обработка символов UTF-8
SELECT SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2);
+--------------------------------------+
| SPLIT_PART('ṭṛì ḍḍumai ṭṛì', ' ', 2) |
+--------------------------------------+
| ḍḍumai |
+--------------------------------------+

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

SPLIT_PART, SPLIT