Перейти к основному содержанию
Перейти к основному содержанию

Функции для разделения строк

Примечание

Документация ниже генерируется из системной таблицы system.functions.

alphaTokens

Введена в версии v1.1

Выбирает подстроки из последовательностей подряд идущих байт в диапазонах a-z и A-Z и возвращает массив этих подстрок.

Синтаксис

alphaTokens(s[, max_substrings])

Псевдонимы: splitByAlpha

Аргументы

  • s — строка, которую нужно разбить. String
  • max_substrings — необязательный параметр. Если max_substrings > 0, количество возвращаемых подстрок не будет превышать max_substrings, в противном случае функция вернёт максимально возможное количество подстрок. Int64

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

Возвращает массив полученных подстрок s. Array(String)

Примеры

Пример использования

SELECT alphaTokens('abca1abc');
┌─alphaTokens('abca1abc')─┐
│ ['abca','abc']          │
└─────────────────────────┘

arrayStringConcat

Добавлено в: v1.1

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

Синтаксис

arrayStringConcat(arr[, separator])

Аргументы

  • arr — Массив для конкатенации. Array(T)
  • separator — Необязательный параметр. Строка-разделитель. По умолчанию — пустая строка. const String

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

Возвращает конкатенированную строку. String

Примеры

Пример использования

SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;
┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘

extractAllGroupsVertical

Впервые появилась в: v20.5

Находит все группы в строке с использованием регулярного выражения и возвращает массив массивов, где каждый внутренний массив содержит фрагменты, соответствующие каждой группе, упорядоченные по их появлению во входной строке.

Синтаксис

extractAllGroupsVertical(s, regexp)

Псевдонимы: extractAllGroups

Аргументы

  • s — Входная строка, из которой выполняется извлечение. String или FixedString
  • regexp — Регулярное выражение для сопоставления. const String или const FixedString

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

Возвращает массив массивов, где каждый внутренний массив содержит группы захвата для одного совпадения. Каждое совпадение возвращает массив с элементами, соответствующими группам захвата в регулярном выражении (группа 1, группа 2 и т. д.). Если совпадения не найдены, возвращается пустой массив. Array(Array(String))

Примеры

Пример использования

WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');
[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]

ngrams

Появилась в версии v21.11

Разбивает строку в кодировке UTF-8 на n-граммы длиной N.

Синтаксис

ngrams(s, N)

Аргументы

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

Возвращает массив n-грамм. Array(String)

Примеры

Пример использования

SELECT ngrams('ClickHouse', 3);
['Cli','lic','ick','ckH','kHo','Hou','ous','use']

splitByChar

Введена в версии v1.1

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

Примечание

Параметр splitby_max_substrings_includes_remaining_string (по умолчанию: 0) определяет, будет ли оставшаяся часть строки включена в последний элемент результирующего массива, когда аргумент max_substrings > 0.

Пустые подстроки могут присутствовать, когда:

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

Синтаксис

splitByChar(separator, s[, max_substrings])

Аргументы

  • separator — Разделитель должен быть однобайтовым символом. String
  • s — Строка, которую нужно разбить. String
  • max_substrings — Необязательный аргумент. Если max_substrings > 0, возвращаемый массив будет содержать не более max_substrings подстрок, в противном случае функция вернёт максимально возможное количество подстрок. Значение по умолчанию — 0. Int64

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

Возвращает массив полученных подстрок. Array(String)

Примеры

Пример использования

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

splitByNonAlpha

Введена в версии v21.9

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

Примечание

Настройка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) определяет, включается ли оставшаяся часть строки в последний элемент результирующего массива, когда аргумент max_substrings > 0.

Синтаксис

splitByNonAlpha(s[, max_substrings])

Аргументы

  • s — строка для разбиения. String
  • max_substrings — необязательный параметр. Если max_substrings > 0, количество возвращаемых подстрок не будет превышать max_substrings, в противном случае функция вернёт максимально возможное количество подстрок. Значение по умолчанию: 0. Int64

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

Возвращает массив выбранных подстрок строки s. Array(String)

Примеры

Пример использования

SELECT splitByNonAlpha('[email protected]');
['user','domain','com']

splitByRegexp

Добавлена в версии v21.6

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

Пустые подстроки могут появляться в следующих случаях:

  • в начале или в конце строки найдено непустое соответствие регулярному выражению
  • найдено несколько последовательных непустых соответствий регулярному выражению
  • исходная строка пуста, а регулярное выражение не пустое.
Примечание

Параметр splitby_max_substrings_includes_remaining_string (по умолчанию: 0) определяет, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings > 0.

Синтаксис

splitByRegexp(regexp, s[, max_substrings])

Аргументы

  • regexp — регулярное выражение. Константа. String или FixedString
  • s — строка для разбиения. String
  • max_substrings — необязательный параметр. Если max_substrings > 0, количество возвращаемых подстрок не превышает max_substrings, в противном случае функция вернёт как можно больше подстрок. Значение по умолчанию: 0. Int64

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

Возвращает массив выбранных подстрок строки s. Array(String)

Примеры

Пример использования

SELECT splitByRegexp('\\d+', 'a12bc23de345f');
┌─splitByRegex⋯c23de345f')─┐
│ ['a12bc23de345f']        │
└──────────────────────────┘

Пустое регулярное выражение

SELECT splitByRegexp('', 'abcde');
┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByString

Введена в версии v1.1

Разбивает строку с константным разделителем separator, состоящим из нескольких символов, на массив подстрок. Если строка separator пуста, строка s будет разбита на массив отдельных символов.

Пустые подстроки могут появляться, когда:

  • Непустой разделитель находится в начале или в конце строки
  • Есть несколько подряд идущих непустых разделителей
  • Исходная строка s пуста, а разделитель непустой
Примечание

Параметр splitby_max_substrings_includes_remaining_string (по умолчанию: 0) определяет, включается ли оставшаяся часть строки в последний элемент результирующего массива, когда аргумент max_substrings > 0.

Синтаксис

splitByString(separator, s[, max_substrings])

Аргументы

  • separator — разделитель. String
  • s — строка для разбиения. String
  • max_substrings — необязательный аргумент. Если max_substrings > 0, количество возвращаемых подстрок не превышает max_substrings, в противном случае функция вернёт максимально возможное количество подстрок. Значение по умолчанию: 0. Int64

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

Возвращает массив выбранных подстрок строки s Array(String)

Примеры

Пример использования

SELECT splitByString(', ', '1, 2 3, 4,5, abcde');
┌─splitByStrin⋯4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────┘

Пустой разделитель

SELECT splitByString('', 'abcde');
┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e']      │
└────────────────────────────┘

splitByWhitespace

Добавлено в: v21.9

Разбивает строку, разделённую пробельными символами, на массив подстрок.

Примечание

Настройка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) определяет, должна ли оставшаяся часть строки включаться в последний элемент результирующего массива, когда max_substrings > 0.

Синтаксис

splitByWhitespace(s[, max_substrings])

Аргументы

  • s — Строка для разделения. String
  • max_substrings — Необязательный аргумент. Когда max_substrings > 0, количество возвращаемых подстрок не превышает max_substrings, в противном случае функция вернёт максимально возможное количество подстрок. Значение по умолчанию: 0. Int64

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

Возвращает массив полученных подстрок s. Array(String)

Примеры

Пример использования

SELECT splitByWhitespace('  1!  a,  b.  ');
['1!','a,','b.']

tokens

Впервые появилась в версии: v21.11

Разбивает строку на токены с использованием заданного токенайзера. Токенайзер по умолчанию использует небуквенно-цифровые ASCII-символы в качестве разделителей.

В случае токенайзера split, если токены не образуют префиксный код, вам, вероятно, нужно, чтобы при выборе разделителей приоритет отдавался более длинным. Для этого задавайте разделители в порядке убывания их длины. Например, при separators = ['%21', '%'] строка %21abc будет разбита на токены как ['abc'], тогда как при separators = ['%', '%21'] она будет разбита на токены как ['21ac'] (что, скорее всего, не то, что вам нужно).

Синтаксис

tokens(value[, tokenizer[, ngrams[, separators]]])

Аргументы

  • value — Входная строка. String или FixedString
  • tokenizer — Токенизатор, который будет использоваться. Допустимые значения: splitByNonAlpha, ngrams, splitByString, array и sparseGrams. Необязательный параметр, по умолчанию (если явно не задан) используется splitByNonAlpha. const String
  • ngrams — Имеет значение только если аргумент tokenizer равен ngrams: необязательный параметр, определяющий длину n-грамм. Должен быть в диапазоне от 1 до 8. Если явно не задан, по умолчанию равен 3. const UInt8
  • separators — Имеет значение только если аргумент tokenizer равен split: необязательный параметр, определяющий строки-разделители. Если явно не задан, по умолчанию используется [' ']. const Array(String)

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

Возвращает массив токенов, полученных из входной строки. Array

Примеры

Токенизатор по умолчанию

SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\   test4') AS tokens;
['test1','test2','test3','test4']

Токенизатор n-грамм

SELECT tokens('abc def', 'ngrams', 3) AS tokens;
['abc','bc ','c d',' de','def']