Co-authored-by: gyuton <40863448+gyuton@users.noreply.github.com>
11 KiB
toc_priority | toc_title |
---|---|
47 | Функции разбиения и слияния строк и массивов |
Функции разбиения и слияния строк и массивов
splitByChar(separator, s)
Разбивает строку на подстроки, используя в качестве разделителя separator
.
separator должен быть константной строкой из ровно одного символа.
Возвращается массив выделенных подстрок. Могут выделяться пустые подстроки, если разделитель идёт в начале или в конце строки, или если идёт более одного разделителя подряд.
Синтаксис
splitByChar(separator, s)
Аргументы
Возвращаемые значения
Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:
- Разделитель находится в начале или конце строки;
- Задано несколько последовательных разделителей;
- Исходная строка
s
пуста.
Пример
SELECT splitByChar(',', '1,2,3,abcde');
┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde'] │
└─────────────────────────────────┘
splitByString(separator, s)
Разбивает строку на подстроки, разделенные строкой. В качестве разделителя использует константную строку separator
, которая может состоять из нескольких символов. Если строка separator
пуста, то функция разделит строку s
на массив из символов.
Синтаксис
splitByString(separator, s)
Аргументы
Возвращаемые значения
Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:
- Разделитель находится в начале или конце строки;
- Задано несколько последовательных разделителей;
- Исходная строка
s
пуста.
Примеры
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');
┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────────────────────┘
SELECT splitByString('', 'abcde');
┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘
splitByRegexp(regexp, s)
Разбивает строку на подстроки, разделенные регулярным выражением. В качестве разделителя используется строка регулярного выражения regexp
. Если regexp
пустая, функция разделит строку s
на массив одиночных символов. Если для регулярного выражения совпадения не найдено, строка s
не будет разбита.
Синтаксис
splitByRegexp(regexp, s)
Аргументы
regexp
— регулярное выражение. Константа. String или FixedString.s
— разбиваемая строка. String.
Возвращаемые значения
Возвращает массив выбранных подстрок. Пустая подстрока может быть возвращена, если:
- Непустое совпадение с регулярным выражением происходит в начале или конце строки;
- Имеется несколько последовательных совпадений c непустым регулярным выражением;
- Исходная строка
s
пуста, а регулярное выражение не пустое.
Примеры
Запрос:
SELECT splitByRegexp('\\d+', 'a12bc23de345f');
Результат:
┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐
│ ['a','bc','de','f'] │
└────────────────────────────────────────┘
Запрос:
SELECT splitByRegexp('', 'abcde');
Результат:
┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘
splitByWhitespace(s)
Разбивает строку на подстроки, используя в качестве разделителей пробельные символы.
Синтаксис
splitByWhitespace(s)
Аргументы
s
— разбиваемая строка. String.
Возвращаемые значения
Возвращает массив подстрок.
Пример
SELECT splitByWhitespace(' 1! a, b. ');
┌─splitByWhitespace(' 1! a, b. ')─┐
│ ['1!','a,','b.'] │
└─────────────────────────────────────┘
splitByNonAlpha(s)
Разбивает строку на подстроки, используя в качестве разделителей пробельные символы и символы пунктуации.
Синтаксис
splitByNonAlpha(s)
Аргументы
s
— разбиваемая строка. String.
Возвращаемые значения
Возвращает массив подстрок.
Пример
SELECT splitByNonAlpha(' 1! a, b. ');
┌─splitByNonAlpha(' 1! a, b. ')─┐
│ ['1','a','b'] │
└───────────────────────────────────┘
arrayStringConcat(arr[, separator])
Склеивает строки, перечисленные в массиве, с разделителем separator. separator - необязательный параметр, константная строка, по умолчанию равен пустой строке. Возвращается строка.
alphaTokens(s)
Выделяет подстроки из подряд идущих байт из диапазонов a-z и A-Z. Возвращается массив выделенных подстрок.
Пример:
SELECT alphaTokens('abca1abc');
┌─alphaTokens('abca1abc')─┐
│ ['abca','abc'] │
└─────────────────────────┘
ngrams
Выделяет из UTF-8 строки отрезки (n-граммы) размером ngramsize
символов.
Синтаксис
ngrams(string, ngramsize)
Аргументы
string
— строка. String or FixedString.ngramsize
— размер n-грамм. UInt.
Возвращаемые значения
- Массив с n-граммами.
Тип: Array(FixedString).
Пример
Запрос:
SELECT ngrams('ClickHouse', 3);
Результат:
┌─ngrams('ClickHouse', 3)───────────────────────────┐
│ ['Cli','lic','ick','ckH','kHo','Hou','ous','use'] │
└───────────────────────────────────────────────────┘
tokens
Разбивает строку на токены, используя в качестве разделителей не буквенно-цифровые символы ASCII.
Аргументы
input_string
— набор байтов. String.
Возвращаемые значения
Возвращает массив токенов.
Тип: Array.
Пример
Запрос:
SELECT tokens('test1,;\\ test2,;\\ test3,;\\ test4') AS tokens;
Результат:
┌─tokens────────────────────────────┐
│ ['test1','test2','test3','test4'] │
└───────────────────────────────────┘