跳到主要内容
跳到主要内容

Array(T)

一个 T 类型项目的数组,起始数组索引为 1。T 可以是任何数据类型,包括数组。

创建数组

您可以使用函数来创建数组:

您还可以使用方括号。

创建数组的示例:

处理数据类型

在动态创建数组时,ClickHouse 会自动将参数类型定义为能够存储所有列出参数的最小数据类型。如果有任何 Nullable 或字面量 NULL 值,数组元素的类型也会变为 Nullable

如果 ClickHouse 无法确定数据类型,则会产生异常。例如,这种情况发生在尝试同时创建包含字符串和数字的数组时(SELECT array(1, 'a'))。

自动数据类型检测的示例:

如果您尝试创建不兼容数据类型的数组,ClickHouse 会抛出异常:

数组大小

可以通过使用 size0 子列查找数组的大小,而不需读取整个列。对于多维数组,可以使用 sizeN-1,其中 N 是所需的维度。

示例

查询:

结果:

从数组读取嵌套子列

如果 Array 中嵌套的类型 T 具有子列(例如,如果它是一个 命名元组),您可以按相同的子列名称从 Array(T) 类型读取其子列。子列的类型将是原始子列类型的 Array

示例