Array

简介: Array

数组有两种定义形式,常规方式 array(T)

$ SELECT array(1, 2) as a, toTypeName(a);
┌─a─────┬─toTypeName([1, 2])─┐
│ [1,2] │ Array(UInt8)       │
└───────┴────────────────────┘点击复制复制失败已复制


或者简写 [T]

$ SELECT [1, 2];
┌─[1, 2]─┐
│ [1,2]  │
└────────┘点击复制复制失败已复制


通过上述的例子可以发现,在查询时并不需要主动声明数组的元素类型。因为 ClickHouse 的数组拥有类型推断的能力。


推断依据:以最小存储代价为原则,即使用最小可表达的数据类型


在上面的例子中, array(1, 2) 会通过自动推断将 Uint8 作为数组类型。但是在数组元素中如果存在 Null 值,则元素类型将变回 Nullable ,例如:

$ SELECT [1, 2, null] as a, toTypeName(a);
┌─a──────────┬─toTypeName([1, 2, NULL])─┐
│ [1,2,NULL] │ Array(Nullable(UInt8))   │
└────────────┴──────────────────────────┘点击复制复制失败已复制


注意

在同一个数组内可以包含多种数据类型,例如数组 [1, 2.0] 是可行的。但各类型之间必须兼容,例如数组 [1, '2'] 则会报错。


在定义表字段时,数组需要指定明确的元素类型,例如:

$ CREATE TABLE Array_TEST (
  c1 Array(String)
) engine = Memory
目录
相关文章
|
SQL 安全 数据库
sqlmap的基本使用方法
sqlmap的基本使用方法
395 0
|
9月前
奇偶校验,CRC循环冗余校验,海明码校验
奇偶校验,CRC循环冗余校验,海明码校验
134 0
|
存储
Mosquitto-1.5.4源码分析,主题订阅的数据结构及SUBSCRIBE的函数跳转关系
Mosquitto-1.5.4源码分析,主题订阅的数据结构及SUBSCRIBE的函数跳转关系
389 0
Mosquitto-1.5.4源码分析,主题订阅的数据结构及SUBSCRIBE的函数跳转关系
|
物联网
阿里云物联网平台OTA动态升级演示
除了静态升级外,物联网平台也可以做动态升级,即设备版本号属于待升级版本时,设备上线即获取云端下发的升级包
1374 0
阿里云物联网平台OTA动态升级演示
|
物联网 Java 开发工具
阿里云物联网平台设备升级OTA演示
OTA(Over-the-Air Technology)即空中下载技术。物联网平台支持通过OTA方式进行设备固件升级。本文以MQTT协议下的固件升级为例,介绍OTA固件升级流程、数据流转使用的Topic和数据格式,并使用MQTT.fx工作作为模拟设备演示整个升级流程。
阿里云物联网平台设备升级OTA演示
|
9月前
|
存储 监控 物联网
MQTT协议问题之OTA升级包下载如何解决
MQTT协议是一个轻量级的消息传输协议,设计用于物联网(IoT)环境中设备间的通信;本合集将详细阐述MQTT协议的基本原理、特性以及各种实际应用场景,供用户学习和参考。
404 3
|
自然语言处理 Java API
ES索引重建reindex详解
ES索引重建reindex详解
2009 0
|
9月前
给WordPress网站增加一个带时间的led广告牌
给WordPress网站增加一个带时间的led广告牌
492 3
|
调度 开发者
【Freertos基础入门】2个Freertos的Delay函数
【Freertos基础入门】2个Freertos的Delay函数
1033 1

热门文章

最新文章