Функции для разделения строк
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_substrings
разбиений, и остаток строки возвращается в качестве последнего элемента списка.
Например,
- в 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
, в противном случае функция вернет как можно больше подстрок.
Возвращаемые значения
Пустые подстроки могут быть выбраны, когда:
- Не пустое совпадение регулярного выражения встречается в начале или в конце строки;
- Есть несколько последовательных не пустых совпадений регулярного выражения;
- Исходная строка
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 символы в качестве разделителей.
Аргументы
input_string
— Любой набор байтов, представленный как объект типа String.
Возвращаемое значение
- Результирующий массив токенов из входной строки. Array.
Пример
Результат: