Функции для разделения строк
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:
Результат: