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

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() 的值:

示例

查询:

结果:

读取映射的子列

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

示例

查询:

结果:

另见