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

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

Примечание

Документация ниже генерируется из системной таблицы 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

Аргументы

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

Возвращает массив массивов, где каждый внутренний массив содержит захваченные группы из одного совпадения. Каждое совпадение формирует массив с элементами, соответствующими захватывающим группам в регулярном выражении (группа 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-граммы размером ngramsize символов.

Синтаксис

ngrams(s, ngram_size)

Аргументы

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

Массив с 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

Introduced in: 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('user@domain.com');
['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-грамм. Если не указан явно, по умолчанию равен 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']