ClickHouse/docs/ru/sql-reference/functions/splitting-merging-functions.md
2021-11-24 21:18:38 +08:00

11 KiB
Raw Blame History

toc_priority toc_title
47 Функции разбиения и слияния строк и массивов

Функции разбиения и слияния строк и массивов

splitByChar(separator, s)

Разбивает строку на подстроки, используя в качестве разделителя separator. separator должен быть константной строкой из ровно одного символа. Возвращается массив выделенных подстрок. Могут выделяться пустые подстроки, если разделитель идёт в начале или в конце строки, или если идёт более одного разделителя подряд.

Синтаксис

splitByChar(separator, s)

Аргументы

  • separator — разделитель, состоящий из одного символа. String.
  • s — разбиваемая строка. String.

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

Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:

  • Разделитель находится в начале или конце строки;
  • Задано несколько последовательных разделителей;
  • Исходная строка s пуста.

Тип: Array(String).

Пример

SELECT splitByChar(',', '1,2,3,abcde');
┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde']           │
└─────────────────────────────────┘

splitByString(separator, s)

Разбивает строку на подстроки, разделенные строкой. В качестве разделителя использует константную строку separator, которая может состоять из нескольких символов. Если строка separator пуста, то функция разделит строку s на массив из символов.

Синтаксис

splitByString(separator, s)

Аргументы

  • separator — разделитель. String.
  • s — разбиваемая строка. String.

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

Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:

  • Разделитель находится в начале или конце строки;
  • Задано несколько последовательных разделителей;
  • Исходная строка s пуста.

Тип: Array(String).

Примеры

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 пуста, а регулярное выражение не пустое.

Тип: Array(String).

Примеры

Запрос:

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.

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

Возвращает массив подстрок.

Тип: Array(String).

Пример

SELECT splitByWhitespace('  1!  a,  b.  ');
┌─splitByWhitespace('  1!  a,  b.  ')─┐
│ ['1!','a,','b.']                    │
└─────────────────────────────────────┘

splitByNonAlpha(s)

Разбивает строку на подстроки, используя в качестве разделителей пробельные символы и символы пунктуации.

Синтаксис

splitByNonAlpha(s)

Аргументы

  • s — разбиваемая строка. String.

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

Возвращает массив подстрок.

Тип: Array(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)

Аргументы

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

  • Массив с n-граммами.

Тип: Array(String).

Пример

Запрос:

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'] │
└───────────────────────────────────┘