--- slug: /ru/sql-reference/functions/splitting-merging-functions sidebar_position: 47 sidebar_label: "Функции разбиения и слияния строк и массивов" --- # Функции разбиения и слияния строк и массивов {#funktsii-razbieniia-i-sliianiia-strok-i-massivov} ## splitByChar(separator, s) {#splitbycharseparator-s} Разбивает строку на подстроки, используя в качестве разделителя `separator`. separator должен быть константной строкой из ровно одного символа. Возвращается массив выделенных подстрок. Могут выделяться пустые подстроки, если разделитель идёт в начале или в конце строки, или если идёт более одного разделителя подряд. **Синтаксис** ``` sql splitByChar(separator, s) ``` **Аргументы** - `separator` — разделитель, состоящий из одного символа. [String](../../sql-reference/data-types/string.md). - `s` — разбиваемая строка. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда: - Разделитель находится в начале или конце строки; - Задано несколько последовательных разделителей; - Исходная строка `s` пуста. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Пример** ``` sql SELECT splitByChar(',', '1,2,3,abcde'); ``` ``` text ┌─splitByChar(',', '1,2,3,abcde')─┐ │ ['1','2','3','abcde'] │ └─────────────────────────────────┘ ``` ## splitByString(separator, s) {#splitbystringseparator-s} Разбивает строку на подстроки, разделенные строкой. В качестве разделителя использует константную строку `separator`, которая может состоять из нескольких символов. Если строка `separator` пуста, то функция разделит строку `s` на массив из символов. **Синтаксис** ``` sql splitByString(separator, s) ``` **Аргументы** - `separator` — разделитель. [String](../../sql-reference/data-types/string.md). - `s` — разбиваемая строка. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда: - Разделитель находится в начале или конце строки; - Задано несколько последовательных разделителей; - Исходная строка `s` пуста. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Примеры** ``` sql SELECT splitByString(', ', '1, 2 3, 4,5, abcde'); ``` ``` text ┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐ │ ['1','2 3','4,5','abcde'] │ └───────────────────────────────────────────┘ ``` ``` sql SELECT splitByString('', 'abcde'); ``` ``` text ┌─splitByString('', 'abcde')─┐ │ ['a','b','c','d','e'] │ └────────────────────────────┘ ``` ## splitByRegexp(regexp, s) {#splitbyregexpseparator-s} Разбивает строку на подстроки, разделенные регулярным выражением. В качестве разделителя используется строка регулярного выражения `regexp`. Если `regexp` пустая, функция разделит строку `s` на массив одиночных символов. Если для регулярного выражения совпадения не найдено, строка `s` не будет разбита. **Синтаксис** ``` sql splitByRegexp(regexp, s) ``` **Аргументы** - `regexp` — регулярное выражение. Константа. [String](../data-types/string.md) или [FixedString](../data-types/fixedstring.md). - `s` — разбиваемая строка. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив выбранных подстрок. Пустая подстрока может быть возвращена, если: - Непустое совпадение с регулярным выражением происходит в начале или конце строки; - Имеется несколько последовательных совпадений c непустым регулярным выражением; - Исходная строка `s` пуста, а регулярное выражение не пустое. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Примеры** Запрос: ``` sql SELECT splitByRegexp('\\d+', 'a12bc23de345f'); ``` Результат: ``` text ┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐ │ ['a','bc','de','f'] │ └────────────────────────────────────────┘ ``` Запрос: ``` sql SELECT splitByRegexp('', 'abcde'); ``` Результат: ``` text ┌─splitByRegexp('', 'abcde')─┐ │ ['a','b','c','d','e'] │ └────────────────────────────┘ ``` ## splitByWhitespace(s) {#splitbywhitespaceseparator-s} Разбивает строку на подстроки, используя в качестве разделителей пробельные символы. **Синтаксис** ``` sql splitByWhitespace(s) ``` **Аргументы** - `s` — разбиваемая строка. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив подстрок. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Пример** ``` sql SELECT splitByWhitespace(' 1! a, b. '); ``` ``` text ┌─splitByWhitespace(' 1! a, b. ')─┐ │ ['1!','a,','b.'] │ └─────────────────────────────────────┘ ``` ## splitByNonAlpha(s) {#splitbynonalphaseparator-s} Разбивает строку на подстроки, используя в качестве разделителей пробельные символы и символы пунктуации. **Синтаксис** ``` sql splitByNonAlpha(s) ``` **Аргументы** - `s` — разбиваемая строка. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив подстрок. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Пример** ``` sql SELECT splitByNonAlpha(' 1! a, b. '); ``` ``` text ┌─splitByNonAlpha(' 1! a, b. ')─┐ │ ['1','a','b'] │ └───────────────────────────────────┘ ``` ## arrayStringConcat(arr\[, separator\]) {#arraystringconcatarr-separator} Склеивает строковые представления элементов массива с разделителем `separator`. `separator` - необязательный параметр, константная строка, по умолчанию равен пустой строке. Возвращается строка. ## alphaTokens(s) {#alphatokenss} Выделяет подстроки из подряд идущих байт из диапазонов a-z и A-Z. Возвращается массив выделенных подстрок. **Пример:** ``` sql SELECT alphaTokens('abca1abc'); ``` ``` text ┌─alphaTokens('abca1abc')─┐ │ ['abca','abc'] │ └─────────────────────────┘ ``` ## ngrams {#ngrams} Выделяет из UTF-8 строки отрезки (n-граммы) размером `ngramsize` символов. **Синтаксис** ``` sql ngrams(string, ngramsize) ``` **Аргументы** - `string` — строка. [String](../../sql-reference/data-types/string.md) or [FixedString](../../sql-reference/data-types/fixedstring.md). - `ngramsize` — размер n-грамм. [UInt](../../sql-reference/data-types/int-uint.md). **Возвращаемые значения** - Массив с n-граммами. Тип: [Array](../../sql-reference/data-types/array.md)([String](../../sql-reference/data-types/string.md)). **Пример** Запрос: ``` sql SELECT ngrams('ClickHouse', 3); ``` Результат: ``` text ┌─ngrams('ClickHouse', 3)───────────────────────────┐ │ ['Cli','lic','ick','ckH','kHo','Hou','ous','use'] │ └───────────────────────────────────────────────────┘ ``` ## tokens {#tokens} Разбивает строку на токены, используя в качестве разделителей не буквенно-цифровые символы ASCII. **Аргументы** - `input_string` — набор байтов. [String](../../sql-reference/data-types/string.md). **Возвращаемые значения** Возвращает массив токенов. Тип: [Array](../data-types/array.md). **Пример** Запрос: ``` sql SELECT tokens('test1,;\\ test2,;\\ test3,;\\ test4') AS tokens; ``` Результат: ``` text ┌─tokens────────────────────────────┐ │ ['test1','test2','test3','test4'] │ └───────────────────────────────────┘ ```