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` .
2017-03-12 17:58:51 +00:00
separator должен быть константной строкой из ровно одного символа.
Возвращается массив выделенных подстрок. Могут выделяться пустые подстроки, если разделитель идёт в начале или в конце строки, или если идёт более одного разделителя подряд.
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
## arrayStringConcat(arr\[, separator\]) {#arraystringconcatarr-separator}
Склеивает строки, перечисленные в массиве, с разделителем separator.
separator - необязательный параметр, константная строка, по умолчанию равен пустой строке.
Возвращается строка.
## 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
```