Функции для разделения строк
splitByChar
Разделяет строку на подстроки, разделенные заданным символом. Использует константную строку separator
, состоящую ровно из одного символа.
Возвращает массив выбранных подстрок. Пустые подстроки могут быть выбраны, если разделитель встречается в начале или в конце строки, или если есть несколько последовательных разделителей.
Синтаксис
Аргументы
separator
— Разделитель должен быть символом с одним байтом. String.s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Еслиmax_substrings
> 0, возвращаемый массив будет содержать не болееmax_substrings
подстрок, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
Пустые подстроки могут быть выбраны, когда:
- Разделитель находится в начале или в конце строки;
- Есть несколько последовательных разделителей;
- Исходная строка
s
пуста.
Поведение параметра max_substrings
изменилось, начиная с ClickHouse v22.11. В версиях, старше этого, max_substrings > 0
означало, что будет выполнено max_substring
-количество разбиений, и остаток строки будет возвращен как последний элемент списка.
Например,
- в v22.10:
SELECT splitByChar('=', 'a=b=c=d', 2);
возвращал['a','b','c=d']
- в v22.11:
SELECT splitByChar('=', 'a=b=c=d', 2);
возвращал['a','b']
Поведение, аналогичное ClickHouse версии до v22.11, можно достигнуть, установив
splitby_max_substrings_includes_remaining_string
SELECT splitByChar('=', 'a=b=c=d', 2) SETTINGS splitby_max_substrings_includes_remaining_string = 1 -- ['a', 'b=c=d']
Пример
Результат:
splitByString
Разделяет строку на подстроки, разделенные строкой. Использует константную строку separator
из нескольких символов в качестве разделителя. Если строка separator
пуста, она разделит строку s
на массив отдельных символов.
Синтаксис
Аргументы
separator
— Разделитель. String.s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Когдаmax_substrings
> 0, возвращаемые подстроки не будут превышатьmax_substrings
, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
Пустые подстроки могут быть выбраны, когда:
- Непустой разделитель находится в начале или в конце строки;
- Есть несколько последовательных непустых разделителей;
- Исходная строка
s
пуста, в то время как разделитель не пуст.
Установка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) контролирует, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings
> 0.
Пример
Результат:
Результат:
splitByRegexp
Разделяет строку на подстроки, разделенные регулярным выражением. Использует строку регулярного выражения regexp
в качестве разделителя. Если regexp
пусто, она разделит строку s
на массив отдельных символов. Если совпадение для этого регулярного выражения не найдено, строка s
не будет разделена.
Синтаксис
Аргументы
regexp
— Регулярное выражение. Константа. String или FixedString.s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Когдаmax_substrings
> 0, возвращаемые подстроки не будут превышатьmax_substrings
, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
-
Массив выбранных подстрок. Array(String). Пустые подстроки могут быть выбраны, когда:
-
Непустое совпадение регулярного выражения происходит в начале или в конце строки;
-
Есть несколько последовательных непустых совпадений регулярного выражения;
-
Исходная строка
s
пуста, в то время как регулярное выражение не пусто.
Установка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) контролирует, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings
> 0.
Пример
Результат:
Результат:
splitByWhitespace
Разделяет строку на подстроки, разделенные символами пробела. Возвращает массив выбранных подстрок.
Синтаксис
Аргументы
s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Когдаmax_substrings
> 0, возвращаемые подстроки не будут превышатьmax_substrings
, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
Установка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) контролирует, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings
> 0.
Пример
Результат:
splitByNonAlpha
Разделяет строку на подстроки, разделенные пробелами и знаками препинания. Возвращает массив выбранных подстрок.
Синтаксис
Аргументы
s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Когдаmax_substrings
> 0, возвращаемые подстроки не будут превышатьmax_substrings
, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
Установка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) контролирует, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings
> 0.
Пример
arrayStringConcat
Конкатенирует строковые представления значений, перечисленных в массиве, с разделителем. separator
— это опциональный параметр: константная строка, по умолчанию установленная в пустую строку.
Возвращает строку.
Синтаксис
Пример
Результат:
alphaTokens
Выбирает подстроки последовательных байтов из диапазонов a-z и A-Z. Возвращает массив подстрок.
Синтаксис
Псевдоним: splitByAlpha
Аргументы
s
— Строка для разделения. String.max_substrings
— ОпциональныйInt64
, по умолчанию равный 0. Когдаmax_substrings
> 0, возвращаемые подстроки не будут превышатьmax_substrings
, в противном случае функция вернет столько подстрок, сколько возможно.
Возвращаемое значение(я)
Установка splitby_max_substrings_includes_remaining_string (по умолчанию: 0) контролирует, будет ли оставшаяся строка включена в последний элемент результирующего массива, когда аргумент max_substrings
> 0.
Пример
extractAllGroups
Извлекает все группы из неперекрывающихся подстрок, соответствующих регулярному выражению.
Синтаксис
Аргументы
text
— String или FixedString.regexp
— Регулярное выражение. Константа. String или FixedString.
Возвращаемые значения
- Если функция находит хотя бы одну соответствующую группу, она возвращает
Array(Array(String))
столбец, сгруппированный по group_id (от 1 до N, где N — количество групп захвата вregexp
). Если нет соответствующей группы, возвращается пустой массив. Array.
Пример
Результат:
ngrams
Разделяет строку UTF-8 на n-граммы размером ngramsize
символов.
Синтаксис
Аргументы
string
— Строка. String или FixedString.ngramsize
— Размер n-граммы. UInt.
Возвращаемые значения
Пример
Результат:
tokens
Разделяет строку на токены с использованием заданного токенизатора. По умолчанию токенизатор использует неалфавитные ASCII-символы в качестве разделителей.
Аргументы
value
— Входная строка. String или FixedString.tokenizer
— Токенизатор для использования. Допустимые аргументы:default
,ngram
,split
, иno_op
. Опционально, если не задано явно, по умолчанию используетсяdefault
. const Stringngrams
— Релевантно только если аргументtokenizer
равенngram
: опциональный параметр, который определяет длину n-грамм. Если не задано явно, по умолчанию устанавливается в3
. UInt8.separators
— Релевантно только если аргументtokenizer
равенsplit
: опциональный параметр, который определяет строки-разделители. Если не задано явно, по умолчанию устанавливается в[' ']
. Array(String).
В случае токенизатора split
: если токены не формируют префиксный код, вероятно, вы хотите, чтобы соответствие предпочло более длинные разделители.
Для этого передайте разделители по убывающей длине.
Например, при разделителях = ['%21', '%']
строка %21abc
будет токенизирована как ['abc']
, тогда как при разделителях = ['%', '%21']
токен будет токенизирован в ['21ac']
(что, вероятно, не то, чего вы хотели).
Возвращаемое значение
- Полученный массив токенов из входной строки. Array.
Пример
С использованием настроек по умолчанию:
Результат:
С использованием токенизатора ngram с длиной ngram 3:
Результат: