Map(K, V)
数据类型 Map(K, V)
存储键值对。
与其他数据库不同,ClickHouse 中的映射并不是唯一的,即一个映射可以包含两个具有相同键的元素。
(这是因为映射在内部实现为 Array(Tuple(K, V))
。)
您可以使用语法 m[k]
获取映射 m
中键 k
的值。
此外,m[k]
会扫描映射,即操作的运行时间与映射的大小成线性关系。
参数
K
— 映射键的类型。任意类型,除了 Nullable 和 LowCardinality 嵌套的 Nullable 类型。V
— 映射值的类型。任意类型。
示例
创建一个包含映射类型列的表:
选择 key2
值:
结果:
如果请求的键 k
不存在于映射中,m[k]
将返回值类型的默认值,例如,对于整数类型返回 0
,对于字符串类型返回 ''
。
要检查映射中是否存在某个键,可以使用函数 mapContains。
结果:
将元组转换为映射
类型为 Tuple()
的值可以使用函数 CAST 转换为类型为 Map()
的值:
示例
查询:
结果:
读取映射的子列
为了避免读取整个映射,在某些情况下可以使用子列 keys
和 values
。
示例
查询:
结果:
另见
- map() 函数
- CAST() 函数
- -Map 组合器用于映射数据类型