2020-10-26 10:29:30 +00:00
---
toc_priority: 47
2021-03-08 14:54:44 +00:00
toc_title: "Функции разбиения и слияния строк и массивов"
2020-10-26 10:29:30 +00:00
---
2020-03-20 18:20:59 +00:00
# Функции разбиения и слияния строк и массивов {#funktsii-razbieniia-i-sliianiia-strok-i-massivov}
## splitByChar(separator, s) {#splitbycharseparator-s}
2017-03-12 17:58:51 +00:00
2020-08-31 11:38:32 +00:00
Разбивает строку на подстроки, используя в качестве разделителя `separator` .
2021-10-24 11:06:46 +00:00
separator должен быть константной строкой из ровно одного символа.
2017-03-12 17:58:51 +00:00
Возвращается массив выделенных подстрок. Могут выделяться пустые подстроки, если разделитель идёт в начале или в конце строки, или если идёт более одного разделителя подряд.
2020-08-31 11:38:32 +00:00
**Синтаксис**
2020-03-20 18:20:59 +00:00
2020-08-31 11:38:32 +00:00
``` sql
2021-05-25 13:03:35 +00:00
splitByChar(separator, s)
2020-08-31 11:38:32 +00:00
```
2017-03-12 17:58:51 +00:00
2021-03-13 18:18:45 +00:00
**Аргументы**
2020-03-20 18:20:59 +00:00
2021-03-13 18:18:45 +00:00
- `separator` — разделитель, состоящий из одного символа. [String ](../../sql-reference/data-types/string.md ).
- `s` — разбиваемая строка. [String ](../../sql-reference/data-types/string.md ).
2017-03-12 17:58:51 +00:00
2020-08-31 11:38:32 +00:00
**Возвращаемые значения**
2020-03-20 18:20:59 +00:00
2020-08-31 11:38:32 +00:00
Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:
2018-09-21 15:13:45 +00:00
2020-08-31 11:38:32 +00:00
- Разделитель находится в начале или конце строки;
- Задано несколько последовательных разделителей;
- Исходная строка `s` пуста.
2021-05-25 13:03:35 +00:00
Тип: [Array ](../../sql-reference/data-types/array.md )([String](../../sql-reference/data-types/string.md)).
2020-08-31 11:38:32 +00:00
**Пример**
2018-09-21 15:13:45 +00:00
2020-03-20 18:20:59 +00:00
``` sql
2021-05-25 13:03:35 +00:00
SELECT splitByChar(',', '1,2,3,abcde');
2019-09-23 15:31:46 +00:00
```
2018-09-21 15:13:45 +00:00
2020-03-20 18:20:59 +00:00
``` text
2020-08-31 11:38:32 +00:00
┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde'] │
└─────────────────────────────────┘
2018-10-16 10:47:17 +00:00
```
2020-03-20 18:20:59 +00:00
2020-08-31 11:38:32 +00:00
## splitByString(separator, s) {#splitbystringseparator-s}
2020-07-19 09:33:50 +00:00
2020-08-31 11:38:32 +00:00
Разбивает строку на подстроки, разделенные строкой. В качестве разделителя использует константную строку `separator` , которая может состоять из нескольких символов. Если строка `separator` пуста, то функция разделит строку `s` на массив из символов.
2020-07-19 09:33:50 +00:00
2020-08-31 11:38:32 +00:00
**Синтаксис**
2020-07-19 09:33:50 +00:00
``` sql
2020-08-31 11:38:32 +00:00
splitByString(separator, s)
2020-07-19 09:33:50 +00:00
```
2021-03-13 18:18:45 +00:00
**Аргументы**
2020-07-19 09:33:50 +00:00
2021-03-13 18:18:45 +00:00
- `separator` — разделитель. [String ](../../sql-reference/data-types/string.md ).
- `s` — разбиваемая строка. [String ](../../sql-reference/data-types/string.md ).
2020-07-19 09:33:50 +00:00
**Возвращаемые значения**
2020-08-31 11:38:32 +00:00
Возвращает массив подстрок. Пустая подстрока, может быть возвращена, когда:
- Разделитель находится в начале или конце строки;
- Задано несколько последовательных разделителей;
- Исходная строка `s` пуста.
2020-07-19 09:33:50 +00:00
2021-05-25 13:03:35 +00:00
Тип: [Array ](../../sql-reference/data-types/array.md )([String](../../sql-reference/data-types/string.md)).
2020-07-19 09:33:50 +00:00
2020-08-31 11:38:32 +00:00
**Примеры**
2020-07-19 09:33:50 +00:00
2020-08-31 11:38:32 +00:00
``` sql
2021-05-25 13:03:35 +00:00
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');
2020-08-31 11:38:32 +00:00
```
2020-07-19 09:33:50 +00:00
2020-08-31 11:38:32 +00:00
``` text
┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────────────────────┘
```
2020-07-19 09:33:50 +00:00
``` sql
2021-05-25 13:03:35 +00:00
SELECT splitByString('', 'abcde');
2020-07-19 09:33:50 +00:00
```
2020-08-31 11:38:32 +00:00
``` text
┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘
```
2021-05-19 10:21:34 +00:00
## splitByRegexp(regexp, s) {#splitbyregexpseparator-s}
2021-05-25 07:50:32 +00:00
Разбивает строку на подстроки, разделенные регулярным выражением. В качестве разделителя используется строка регулярного выражения `regexp` . Если `regexp` пустая, функция разделит строку `s` на массив одиночных символов. Если для регулярного выражения совпадения не найдено, строка `s` не будет разбита.
2021-05-19 10:21:34 +00:00
**Синтаксис**
``` sql
2021-05-25 13:03:35 +00:00
splitByRegexp(regexp, s)
2021-05-19 10:21:34 +00:00
```
**Аргументы**
- `regexp` — регулярное выражение. Константа. [String ](../data-types/string.md ) или [FixedString ](../data-types/fixedstring.md ).
- `s` — разбиваемая строка. [String ](../../sql-reference/data-types/string.md ).
**Возвращаемые значения**
Возвращает массив выбранных подстрок. Пустая подстрока может быть возвращена, если:
- Непустое совпадение с регулярным выражением происходит в начале или конце строки;
2021-05-19 10:37:52 +00:00
- Имеется несколько последовательных совпадений c непустым регулярным выражением;
2021-05-19 10:21:34 +00:00
- Исходная строка `s` пуста, а регулярное выражение не пустое.
2021-05-25 13:03:35 +00:00
Тип: [Array ](../../sql-reference/data-types/array.md )([String](../../sql-reference/data-types/string.md)).
2021-05-19 10:21:34 +00:00
**Примеры**
Запрос:
``` sql
2021-05-25 13:03:35 +00:00
SELECT splitByRegexp('\\d+', 'a12bc23de345f');
2021-05-19 10:21:34 +00:00
```
Результат:
``` text
┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐
│ ['a','bc','de','f'] │
└────────────────────────────────────────┘
```
Запрос:
``` sql
2021-05-25 13:03:35 +00:00
SELECT splitByRegexp('', 'abcde');
2021-05-19 10:21:34 +00:00
```
Результат:
``` text
┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘
```
2020-08-31 11:38:32 +00:00
2021-06-19 12:54:53 +00:00
## 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'] │
└───────────────────────────────────┘
```
2020-08-31 11:38:32 +00:00
## arrayStringConcat(arr\[, separator\]) {#arraystringconcatarr-separator}
2021-10-28 21:40:42 +00:00
Склеивает строковые представления элементов массива с разделителем `separator` .
`separator` - необязательный параметр, константная строка, по умолчанию равен пустой строке.
2020-08-31 11:38:32 +00:00
Возвращается строка.
## alphaTokens(s) {#alphatokenss}
Выделяет подстроки из подряд идущих байт из диапазонов a-z и A-Z.
Возвращается массив выделенных подстрок.
**Пример:**
``` sql
2021-05-25 13:03:35 +00:00
SELECT alphaTokens('abca1abc');
2020-08-31 11:38:32 +00:00
```
2020-07-19 09:33:50 +00:00
``` text
2020-08-31 11:38:32 +00:00
┌─alphaTokens('abca1abc')─┐
│ ['abca','abc'] │
└─────────────────────────┘
2020-07-19 09:33:50 +00:00
```
2021-10-25 21:15:25 +00:00
## 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-граммами.
2021-11-24 13:18:38 +00:00
Тип: [Array ](../../sql-reference/data-types/array.md )([String](../../sql-reference/data-types/string.md)).
2021-10-25 21:15:25 +00:00
**Пример**
Запрос:
``` sql
SELECT ngrams('ClickHouse', 3);
```
Результат:
``` text
┌─ngrams('ClickHouse', 3)───────────────────────────┐
│ ['Cli','lic','ick','ckH','kHo','Hou','ous','use'] │
└───────────────────────────────────────────────────┘
```
2021-10-25 21:24:38 +00:00
## tokens {#tokens}
Разбивает строку на токены, используя в качестве разделителей не буквенно-цифровые символы ASCII.
**Аргументы**
- `input_string` — набор байтов. [String ](../../sql-reference/data-types/string.md ).
**Возвращаемые значения**
Возвращает массив токенов.
Тип: [Array ](../data-types/array.md ).
**Пример**
2021-10-26 17:47:32 +00:00
Запрос:
2021-10-25 21:24:38 +00:00
``` sql
SELECT tokens('test1,;\\ test2,;\\ test3,;\\ test4') AS tokens;
```
2021-10-26 17:47:22 +00:00
Результат:
2021-10-25 21:24:38 +00:00
``` text
┌─tokens────────────────────────────┐
│ ['test1','test2','test3','test4'] │
└───────────────────────────────────┘
```