Array(T)
由 T 类型元素组成的数组,数组的起始索引为 1。T 可以是任何数据类型,包括数组。
创建数组
你可以使用函数创建数组:
也可以用方括号。
创建数组示例:
使用数据类型
在临时创建数组时,ClickHouse 会自动将参数类型推断为能够容纳所有列出参数的最窄数据类型。如果其中包含任何 Nullable 或字面量 NULL 值,数组元素的类型也会变成 Nullable。
如果 ClickHouse 无法确定数据类型,它会抛出异常。例如,当尝试同时使用字符串和数字创建数组时,就会发生这种情况(SELECT array(1, 'a'))。
自动数据类型检测示例:
如果尝试创建一个包含不兼容数据类型的数组,ClickHouse 会抛出异常:
数组大小
可以在不读取整列数据的情况下,使用 size0 子列获取数组的长度。对于多维数组,可以使用 sizeN-1 子列,其中 N 表示目标维度。
示例
查询:
结果:
从 Array 读取嵌套子列
如果 Array 中的嵌套类型 T 本身包含子列(例如,它是一个命名元组),则可以通过具有相同子列名称的 Array(T) 类型来读取这些子列。此时子列的类型将是“原始子列类型”的 Array。
示例