跳转到主要内容
Tuple 是由多个元素组成的元组,其中每个元素都有各自的类型。Tuple 必须至少包含一个元素。 Tuple 用于临时对列进行分组。在查询中使用 IN 表达式时,可以对列进行分组;Tuple 还可用于指定 lambda 函数的某些形式参数。更多信息,请参见 IN 运算符高阶函数 部分。 Tuple 可以作为查询结果返回。在这种情况下,对于 JSON 以外的文本格式,其值以逗号分隔并放在 () 中。在 JSON 格式中,Tuple 会以数组形式输出 (使用 []) 。

创建 Tuple

您可以使用函数创建 Tuple:
创建 Tuple 的示例:
Tuple 可以只包含一个元素 示例:
语法 (tuple_element1, tuple_element2) 可用于创建由多个元素组成的Tuple,无需调用 tuple() 函数。 示例:

数据类型检测

在动态创建Tuple时,ClickHouse 会将Tuple参数的类型推断为能够容纳给定参数值的最小类型。如果该值为 NULL,则推断出的类型为 Nullable 自动检测数据类型的示例:

引用 Tuple 中的元素

可以按名称或索引引用 Tuple 中的元素:
Query
Response

Tuple 的比较运算

比较两个 Tuple 时,会按从左到右的顺序依次比较各个元素。如果第一个 Tuple 的某个元素大于 (小于) 第二个 Tuple 中对应的元素,则第一个 Tuple 大于 (小于) 第二个 Tuple;否则 (即这两个元素相等) ,继续比较下一个元素。 示例:
实际应用示例:

Nullable(Tuple(T1, T2, …))

Beta 功能需要设置 SET enable_nullable_tuple_type = 1 这是一个 Beta 功能。
允许整个 Tuple 为 NULL,而不是像 Tuple(Nullable(T1), Nullable(T2), ...) 那样只能让各个单独元素为 NULL
类型Tuple 可为 NULL元素可为 NULL
Nullable(Tuple(String, Int64))
Tuple(Nullable(String), Nullable(Int64))
示例:
最后修改于 2026年7月2日