--- toc_priority: 68 toc_title: Функции для работы с кортежами --- # Функции для работы с кортежами {#tuple-functions} ## tuple {#tuple} Функция, позволяющая сгруппировать несколько столбцов. Для столбцов, имеющих типы T1, T2, … возвращает кортеж типа Tuple(T1, T2, …), содержащий эти столбцы. Выполнение функции ничего не стоит. Кортежи обычно используются как промежуточное значение в качестве аргумента операторов IN, или для создания списка формальных параметров лямбда-функций. Кортежи не могут быть записаны в таблицу. С помощью функции реализуется оператор `(x, y, …)`. **Синтаксис** ``` sql tuple(x, y, …) ``` ## tupleElement {#tupleelement} Функция, позволяющая достать столбец из кортежа. N - индекс столбца начиная с 1. N должно быть константой. N должно быть целым строго положительным числом не большим размера кортежа. Выполнение функции ничего не стоит. С помощью функции реализуется оператор `x.N`. **Синтаксис** ``` sql tupleElement(tuple, n) ``` ## untuple {#untuple} Выполняет синтаксическую подстановку элементов [кортежа](../../sql-reference/data-types/tuple.md#tuplet1-t2) в место вызова. **Синтаксис** ``` sql untuple(x) ``` Чтобы пропустить некоторые столбцы в результате запроса, вы можете использовать выражение `EXCEPT`. **Параметры** - `x` - функция `tuple`, столбец или кортеж элементов. [Tuple](../../sql-reference/data-types/tuple.md). **Возвращаемое значение** - Нет. **Примеры** Входная таблица: ``` text ┌─key─┬─v1─┬─v2─┬─v3─┬─v4─┬─v5─┬─v6────────┐ │ 1 │ 10 │ 20 │ 40 │ 30 │ 15 │ (33,'ab') │ │ 2 │ 25 │ 65 │ 70 │ 40 │ 6 │ (44,'cd') │ │ 3 │ 57 │ 30 │ 20 │ 10 │ 5 │ (55,'ef') │ │ 4 │ 55 │ 12 │ 7 │ 80 │ 90 │ (66,'gh') │ │ 5 │ 30 │ 50 │ 70 │ 25 │ 55 │ (77,'kl') │ └─────┴────┴────┴────┴────┴────┴───────────┘ ``` Пример использования столбца типа `Tuple` в качестве параметра функции `untuple`: Запрос: ``` sql SELECT untuple(v6) FROM kv; ``` Результат: ``` text ┌─_ut_1─┬─_ut_2─┐ │ 33 │ ab │ │ 44 │ cd │ │ 55 │ ef │ │ 66 │ gh │ │ 77 │ kl │ └───────┴───────┘ ``` Пример использования выражения `EXCEPT`: Запрос: ``` sql SELECT untuple((* EXCEPT (v2, v3),)) FROM kv; ``` Результат: ``` text ┌─key─┬─v1─┬─v4─┬─v5─┬─v6────────┐ │ 1 │ 10 │ 30 │ 15 │ (33,'ab') │ │ 2 │ 25 │ 40 │ 6 │ (44,'cd') │ │ 3 │ 57 │ 10 │ 5 │ (55,'ef') │ │ 4 │ 55 │ 80 │ 90 │ (66,'gh') │ │ 5 │ 30 │ 25 │ 55 │ (77,'kl') │ └─────┴────┴────┴────┴───────────┘ ``` **Смотрите также** - [Tuple](../../sql-reference/data-types/tuple.md) [Оригинальная статья](https://clickhouse.tech/docs/ru/sql-reference/functions/tuple-functions/)