Array(T)
一个 T
类型项目的数组,起始数组索引为 1。T
可以是任何数据类型,包括数组。
创建数组
您可以使用函数来创建数组:
您也可以使用方括号。
创建数组的示例:
使用数据类型
在动态创建数组时,ClickHouse 会自动将参数类型定义为能够存储所有列出参数的最窄数据类型。如果有任何 Nullable 或字面量 NULL 值,数组元素的类型也会变为 Nullable。
如果 ClickHouse 无法确定数据类型,它会生成一个异常。例如,当尝试同时创建包含字符串和数字的数组时(SELECT array(1, 'a')
),会发生这种情况。
自动数据类型检测的示例:
如果您尝试创建不兼容的数据类型数组,ClickHouse 将抛出异常:
数组大小
可以使用 size0
子列找到数组的大小,而不必读取整个列。对于多维数组,您可以使用 sizeN-1
,其中 N
是所需的维度。
示例
查询:
结果:
从数组中读取嵌套子列
如果嵌套类型 T
在 Array
内部具有子列(例如,如果它是一个 命名元组),您可以使用相同的子列名称从 Array(T)
类型中读取它的子列。子列的类型将是原始子列类型的 Array
。
示例