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