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