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

SPLIT/SPLIT_BY_STRING

Описание​

Функция SPLIT_BY_STRING разбивает входную строку на массив строк по заданной строке-разделителю. Эта функция поддерживает разделители из нескольких символов и может отличаться от аналогичных функций в других базах данных способом обработки пустых строк.

Синтаксис​

SPLIT_BY_STRING(<str>, <separator>)

Параметры​

ПараметрОписание
<str>Исходная строка для разбиения. Тип: VARCHAR
<separator>Строка-разделитель, используемая для разбиения. Тип: VARCHAR

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

Возвращает значение типа ARRAY, содержащее массив строк, полученных при разбиении по разделителю.

Правила разбиения:

  • Разбиение выполняется по каждому вхождению separator в str
  • Последовательные разделители создают элементы с пустыми строками
  • Разделители в начале или в конце строки создают элементы с пустыми строками

Особые случаи:

  • Если любой из параметров равен NULL, возвращается NULL
  • Если str является пустой строкой, возвращается пустой массив []
  • Если separator является пустой строкой, str разбивается на символы (каждый символ становится элементом массива)
  • Если separator отсутствует в str, возвращается массив, содержащий исходную строку
  • Если str содержит только разделители, возвращается соответствующее количество пустых строк в зависимости от числа разделителей

Примеры​

  1. Простое разбиение строки
SELECT SPLIT_BY_STRING('hello', 'l');
+-------------------------------+
| SPLIT_BY_STRING('hello', 'l') |
+-------------------------------+
| ["he", "", "o"] |
+-------------------------------+
  1. Пустой разделитель (разбиение на символы)
SELECT SPLIT_BY_STRING('hello', '');
+------------------------------+
| SPLIT_BY_STRING('hello', '') |
+------------------------------+
| ["h", "e", "l", "l", "o"] |
+------------------------------+
  1. Разделитель из нескольких символов
SELECT SPLIT_BY_STRING('apple::banana::cherry', '::');
+------------------------------------------------+
| SPLIT_BY_STRING('apple::banana::cherry', '::') |
+------------------------------------------------+
| ["apple", "banana", "cherry"] |
+------------------------------------------------+
  1. Обработка значений NULL
SELECT SPLIT_BY_STRING(NULL, ','), SPLIT_BY_STRING('hello', NULL);
+-----------------------------+----------------------------------+
| SPLIT_BY_STRING(NULL, ',') | SPLIT_BY_STRING('hello', NULL) |
+-----------------------------+----------------------------------+
| NULL | NULL |
+-----------------------------+----------------------------------+
  1. Обработка пустых строк
SELECT SPLIT_BY_STRING('', ','), SPLIT_BY_STRING('hello', 'xyz');
+---------------------------+----------------------------------+
| SPLIT_BY_STRING('', ',') | SPLIT_BY_STRING('hello', 'xyz') |
+---------------------------+----------------------------------+
| [] | ["hello"] |
+---------------------------+----------------------------------+
  1. Последовательные разделители
SELECT SPLIT_BY_STRING('a,,b,c', ',');
+-------------------------------+
| SPLIT_BY_STRING('a,,b,c', ',') |
+-------------------------------+
| ["a", "", "b", "c"] |
+-------------------------------+
  1. Разделители в начале и в конце строки
SELECT SPLIT_BY_STRING(',a,b,', ',');
+------------------------------+
| SPLIT_BY_STRING(',a,b,', ',') |
+------------------------------+
| ["", "a", "b", ""] |
+------------------------------+
  1. Строка содержит только разделители
SELECT SPLIT_BY_STRING('|||', '|');
+----------------------------+
| SPLIT_BY_STRING('|||', '|') |
+----------------------------+
| ["", "", "", ""] |
+----------------------------+
  1. Разбиение строки с символами UTF-8
SELECT SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ');
+--------------------------------------+
| SPLIT_BY_STRING('ṭṛì ḍḍumai ṭṛì', ' ') |
+--------------------------------------+
| ["ṭṛì", "ḍḍumai", "ṭṛì"] |
+--------------------------------------+
  1. Отсутствующий разделитель
SELECT SPLIT_BY_STRING('hello world', 'xyz');
+--------------------------------------+
| SPLIT_BY_STRING('hello world', 'xyz') |
+--------------------------------------+
| ["hello world"] |
+--------------------------------------+

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

SPLIT_BY_STRING, SPLIT