跳到主要内容
跳到主要内容

Map(K, V)

数据类型 Map(K, V) 存储键值对。

与其他数据库不同,ClickHouse 中的映射并不是唯一的,即一个映射可以包含两个具有相同键的元素。 (这是因为映射在内部实现为 Array(Tuple(K, V))。)

您可以使用语法 m[k] 获取映射 m 中键 k 的值。 此外,m[k] 会扫描映射,即操作的运行时间与映射的大小成线性关系。

参数

  • K — 映射键的类型。任意类型,除了 NullableLowCardinality 嵌套的 Nullable 类型。
  • V — 映射值的类型。任意类型。

示例

创建一个包含映射类型列的表:

选择 key2 值:

结果:

如果请求的键 k 不存在于映射中,m[k] 将返回值类型的默认值,例如,对于整数类型返回 0,对于字符串类型返回 ''。 要检查映射中是否存在某个键,可以使用函数 mapContains

结果:

将元组转换为映射

类型为 Tuple() 的值可以使用函数 CAST 转换为类型为 Map() 的值:

示例

查询:

结果:

读取映射的子列

为了避免读取整个映射,在某些情况下可以使用子列 keysvalues

示例

查询:

结果:

另见