用于处理字典的函数
对于使用 DDL 查询 创建的字典,dict_name 参数必须完整写为 <database>.<dict_name>。否则,将使用当前数据库。
有关连接和配置字典的更多信息,请参阅 Dictionaries。
dictGet、dictGetOrDefault、dictGetOrNull
从字典中检索值。
参数
dict_name— 字典名称。字符串字面量。attr_names— 字典列的名称(字符串字面量),或由列名组成的元组 Tuple(字符串字面量)。id_expr— 键值。Expression 返回与字典键类型相同的值,或返回 Tuple 类型的值,视字典配置而定。default_value_expr— 当字典中不包含具有id_expr键的行时返回的值。Expression 或 Tuple(Expression),返回值(或一组值)的数据类型与为attr_names属性配置的数据类型一致。
返回值
-
如果 ClickHouse 能按该属性的数据类型成功解析该属性,这些函数会返回与
id_expr对应的字典属性值。 -
如果在字典中找不到与
id_expr对应的键,则:dictGet返回字典配置中为该属性指定的<null_value>元素的内容。dictGetOrDefault返回作为default_value_expr参数传入的值。dictGetOrNull在字典中未找到键时返回NULL。
如果 ClickHouse 无法解析属性值或属性值与属性数据类型不匹配,ClickHouse 将抛出异常。
简单键字典示例
创建一个文本文件 ext-dict-test.csv,包含以下内容:
第一列是 id,第二列是 c1。
配置字典:
执行查询:
复合键字典示例
创建一个文本文件 ext-dict-mult.csv,包含以下内容:
第一列是 id,第二列是 c1,第三列是 c2。
配置字典:
执行查询:
范围键字典示例
输入表:
创建字典:
执行查询:
结果:
另请参阅
dictHas
检查字典中是否存在某个键。
参数
返回值
dictGetHierarchy
创建一个数组,包含层级字典中某个键的所有父项。
语法
参数
dict_name— 字典名。String literal。key— 键值。返回 UInt64 类型值的表达式。
返回值
- 该键对应的父键。Array(UInt64)。
dictIsIn
在字典的完整层级链中检查某个键的祖先。
参数
dict_name— 字典名称。字符串字面量。child_id_expr— 要检查的键。表达式,返回 UInt64 类型的值。ancestor_id_expr—child_id_expr键的假定祖先。表达式,返回 UInt64 类型的值。
返回值
- 若
child_id_expr不是ancestor_id_expr的子节点,则返回 0。UInt8。 - 若
child_id_expr是ancestor_id_expr的子节点,或child_id_expr即为ancestor_id_expr,则返回 1。UInt8。
dictGetChildren
返回第一层子节点的索引数组。它是 dictGetHierarchy 的逆向变换。
语法
参数
返回值
示例
考虑如下层级字典:
一级子节点:
dictGetDescendant
返回所有后代,相当于对 dictGetChildren 函数递归调用 level 次的结果。
语法
参数
dict_name— 字典名称。字符串字面量。key— 键值。表达式,返回 UInt64 类型的值。level— 层级。如果level = 0,则返回该键直到最底层的所有后代。UInt8。
返回值
示例
考虑如下层级字典:
所有子节点:
第一层子节点:
dictGetAll
对于每个键,从正则表达式树字典中获取与之匹配的所有节点的属性值。
除返回 Array(T) 类型而非 T 之外,此函数的行为与 dictGet 相同。
语法
参数
dict_name— 字典名称。String literal。attr_names— 字典中列的名称,String literal,或列名的元组,Tuple(String literal)。id_expr— 键的值。Expression,返回字典键类型值的数组,或者根据字典配置返回 Tuple 类型的值。limit- 每个返回数组中值的最大数量。发生截断时,子节点优先于父节点;在其他情况下,会遵循为 regexp 树字典定义的列表顺序。如果未指定,则数组长度不受限制。
返回值
-
如果 ClickHouse 能够按照字典中为该属性定义的数据类型成功解析该属性,则返回一个数组,数组中包含字典属性值,这些值对应于由
attr_names指定的每个属性的id_expr。 -
如果字典中没有与
id_expr对应的键,则返回空数组。
如果 ClickHouse 无法解析该属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
考虑以下 regexp 树字典:
获取所有匹配值:
获取最多 2 个匹配的值:
dictGetKeys
返回其属性等于指定值的字典键。对于单个属性,这是 dictGet 的逆向操作。
语法
参数
返回值
-
对于单键字典:返回属性等于
value_expr的键组成的数组。Array(T),其中T为字典键的数据类型。 -
对于多键字典:返回属性等于
value_expr的键元组数组。Array(Tuple(T1, T2, ...)),其中每个Tuple按顺序包含字典的键列。 -
如果在字典中找不到与
value_expr对应的属性值,则返回空数组。
如果 ClickHouse 无法解析属性的值,或者该值无法转换为属性的数据类型,则会抛出异常。
示例
考虑以下字典:
现在来获取所有级别为 high 的 ID:
使用 max_reverse_dictionary_lookup_cache_size_bytes 设置来限制 dictGetKeys 在每个查询中使用的反向查找缓存大小。该缓存为每个属性值存储序列化的键元组,以避免在同一查询内重复扫描字典。缓存不会在查询之间持久化。当达到限制时,条目将按 LRU 策略进行淘汰。对于大型字典、输入基数较低且工作集可以被缓存完全容纳的场景,此设置最为有效。将其设置为 0 可禁用缓存。
另外,如果 attr_name 列的所有唯一值都可以被缓存完全容纳,那么在大多数情况下,函数的执行时间应当与输入行数呈线性关系,只需额外进行少量的字典扫描。
其他函数
ClickHouse 支持一些专用函数,这些函数可以在不受字典配置影响的情况下,将字典属性值转换为特定数据类型。
函数:
dictGetInt8,dictGetInt16,dictGetInt32,dictGetInt64dictGetUInt8,dictGetUInt16,dictGetUInt32,dictGetUInt64dictGetFloat32,dictGetFloat64dictGetDatedictGetDateTimedictGetUUIDdictGetStringdictGetIPv4,dictGetIPv6
所有这些函数都有带 OrDefault 后缀的变体。例如,dictGetDateOrDefault。
语法:
参数
dict_name— 字典名称。字符串字面量。attr_name— 字典中列的名称。字符串字面量。id_expr— 键的值。表达式,根据字典配置返回 UInt64 或 Tuple 类型的值。default_value_expr— 当字典中不包含键为id_expr的行时返回的值。表达式,返回的数据类型为attr_name属性所配置的数据类型。
返回值
-
如果 ClickHouse 能够按照属性的数据类型成功解析该属性,函数将返回与
id_expr对应的字典属性值。 -
如果字典中不存在请求的
id_expr,则:dictGet[Type]返回在字典配置中为该属性指定的<null_value>元素的内容。dictGet[Type]OrDefault返回作为default_value_expr参数传入的值。
如果 ClickHouse 无法解析该属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例字典
本节中的示例使用以下字典。您可以在 ClickHouse 中创建这些字典,以便运行后文所述函数的示例。
用于 dictGet<T> 和 dictGet<T>OrDefault 函数的示例字典
用于 dictGetAll 的示例字典
创建一个表来存储 regexp tree 字典的数据:
向表中插入数据:
创建 regexp tree 字典:
范围键字典示例
创建输入表:
向输入表中插入数据:
创建字典:
复合键字典示例
创建源表:
向源表中插入数据:
创建字典:
层级字典示例
创建源表:
向源表中插入数据:
创建字典:
dictGet
首次引入于:v18.16
从字典中检索值。
语法
参数
dict_name— 字典名称。Stringattr_names— 字典中列的名称,或列名的元组。String或Tuple(String)id_expr— 键值。返回 UInt64/Tuple(T) 的表达式。UInt64或Tuple(T)
返回值
如果找到该键,则返回与 id_expr 对应的字典属性值。
如果未找到该键,则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
示例
获取单个属性
多个属性
dictGetAll
引入版本:v23.5
将字典属性值转换为 All 数据类型,而不受字典配置影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列名。String或Tuple(String)id_expr— 键值。一个返回字典键类型的值或元组类型值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回字典中与 id_expr 对应的属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetChildren
引入版本:v21.4
返回一个由索引组成的数组,表示第一层级的子节点。它是 dictGetHierarchy 的逆向变换。
语法
参数
dict_name— 字典名称。Stringkey— 要检查的键。const String
返回值
返回该键的第一层子节点。Array(UInt64)
示例
获取字典的第一层子节点
dictGetDate
自 v1.1 起引入
将字典的属性值转换为 Date 数据类型,而不受字典配置的限制。
语法
参数
dict_name— 字典的名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。一个返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性的值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetDateOrDefault
自 v1.1 起引入
将字典属性值转换为 Date 数据类型(不受字典配置影响),如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含以id_expr为键的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetDateTime
自 v1.1 起引入
将字典属性值转换为 DateTime 数据类型,而不考虑字典的配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。一个返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析该属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetDateTimeOrDefault
自 v1.1 引入
将字典属性值转换为 DateTime 数据类型,而不受字典配置方式的影响;如果未找到该键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值(或值集合)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetDescendants
自 v21.4 起引入
返回通过递归调用 dictGetChildren 函数 level 次所得到的全部后代。
语法
参数
dict_name— 字典名称。Stringkey— 要检查的键。const Stringlevel— 要检查的层级。层级深度。如果level = 0,则返回该键到最底层的所有后代。UInt8
返回值
返回该键的所有后代。Array(UInt64)
示例
获取字典的第一层子节点
dictGetFloat32
自 v1.1 起引入
将字典中属性的值转换为 Float32 数据类型,而不受字典配置的影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果无法解析属性的值,或者该值与属性的数据类型不匹配,ClickHouse 会抛出异常。
示例
用法示例
dictGetFloat32OrDefault
引入于:v1.1
将字典属性值转换为 Float32 数据类型,而不受字典配置影响;如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析该属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetFloat64
自 v1.1 引入
将字典属性值转换为 Float64 数据类型,无论字典如何配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中的列名。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetFloat64OrDefault
自 v1.1 版本引入
将字典属性值转换为 Float64 数据类型,而不受字典配置的影响;如果未找到对应键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析该属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetHierarchy
引入版本:v1.1
创建一个数组,其中包含分层字典中某个键的所有父项。
语法
参数
dict_name— 字典名称。Stringkey— 键。const String
返回值
返回该键对应的父级项。Array(UInt64)
示例
获取某个键的层级结构
dictGetIPv4
引入版本:v1.1
无论字典如何配置,都将字典属性值转换为 IPv4 数据类型。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列名。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素内容。
如果 ClickHouse 无法解析属性值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetIPv4OrDefault
引入版本:v23.1
将字典属性的值转换为 IPv4 数据类型,而不受字典配置影响;如果未找到该键,则返回提供的默认值。
语法
参数
dict_name— 字典的名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetIPv6
引入于:v23.1
将字典属性值转换为 IPv6 数据类型,而不受字典配置的影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。一个返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素中的内容。
如果 ClickHouse 无法解析属性值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetIPv6OrDefault
引入于:v23.1
将字典属性值转换为 IPv6 数据类型(无论字典如何配置),或者在未找到键时返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列(属性)的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不存在具有id_expr键的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetInt16
引入版本:v1.1
将字典的属性值转换为 Int16 数据类型,与字典的配置无关。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典的列名。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性的值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果无法解析属性的值或该值与属性的数据类型不匹配,ClickHouse 会抛出异常。
示例
用法示例
dictGetInt16OrDefault
引入版本:v1.1
无论字典如何配置,都将字典属性值转换为 Int16 数据类型;如果未找到该键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列(属性)的名称。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含以id_expr为键的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回 default_value_expr 参数中传入的值。
如果 ClickHouse 无法解析该属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetInt32
引入于:v1.1
将字典属性值转换为 Int32 数据类型,忽略字典自身的配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetInt32OrDefault
引入于:v1.1
将字典属性值转换为 Int32 类型,而不考虑字典的配置;如果未找到该键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含具有id_expr键的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetInt64
自 v1.1 起引入
将字典属性值转换为 Int64 数据类型,无论字典配置如何。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性的值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性值,或者该值与属性数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetInt64OrDefault
引入于:v1.1
将字典属性值转换为 Int64 数据类型,不受字典配置影响;如果未找到键,则返回指定的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回 default_value_expr 参数中传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetInt8
引入版本:v1.1
将字典的属性值转换为 Int8 数据类型,忽略字典本身的配置。
语法
参数
dict_name— 字典的名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。一个返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetInt8OrDefault
引入自:v1.1
将字典中属性的值转换为 Int8 数据类型(不受字典配置影响),如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回传入 default_value_expr 参数的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetKeys
引入版本:v25.12
返回属性等于指定值的字典键。这可以看作是针对单个属性时函数 dictGet 的反向操作。
使用设置项 max_reverse_dictionary_lookup_cache_size_bytes 来限制 dictGetKeys 在每个查询中用于反向查找的缓存大小。
该缓存为每个属性值存储序列化的键元组,以避免在同一查询中多次扫描字典。
该缓存不会在不同查询之间持久化。当达到限制时,会按 LRU 策略淘汰条目。
在字典较大且输入基数较低、工作集能够装入缓存的情况下效果最佳。将其设置为 0 可禁用缓存。
语法
参数
dict_name— 字典名称。Stringattr_name— 要匹配的属性名。Stringvalue_expr— 用于与属性匹配的值表达式。Expression
返回值
对于单键字典:返回一个数组,包含所有属性值等于 value_expr 的键。对于多键字典:返回一个数组,包含所有属性值等于 value_expr 的键元组。如果字典中不存在属性值为 value_expr 的条目,则返回空数组。如果 ClickHouse 无法解析该属性的值,或者该值无法转换为该属性的数据类型,则会抛出异常。
示例
用法示例
dictGetOrDefault
引入版本:v18.16
从字典中获取值,如果未找到键则返回默认值。
语法
参数
dict_name— 字典名称。Stringattr_names— 字典中列的名称,或列名的元组。String或Tuple(String)id_expr— 键值。返回 UInt64/Tuple(T) 的表达式。UInt64或Tuple(T)default_value— 当未找到键时要返回的默认值。类型必须与属性的数据类型一致。
返回值
如果找到了键,则返回与 id_expr 对应的字典属性值。
如果未找到键,则返回提供的 default_value。
示例
获取带默认值的值
dictGetOrNull
引入版本:v21.4
从字典中获取值,如果未找到对应键则返回 NULL。
语法
参数
dict_name— 字典名称。字符串字面量。 -attr_name— 要检索的列名。字符串字面量。 -id_expr— 键的值。返回字典键类型值的表达式。
返回值
如果找到键,则返回与 id_expr 对应的字典属性值。
如果未找到键,则返回 NULL。
示例
使用范围键字典的示例
dictGetString
引入版本:v1.1
将字典属性值转换为 String 数据类型,无论字典如何配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素内容。
如果 ClickHouse 无法解析属性的值,或者该值与属性数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetStringOrDefault
自 v1.1 引入
将字典属性值转换为 String 数据类型,而不受字典配置影响;如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的默认值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析该属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetUInt16
自 v1.1 版本引入
将字典属性值转换为 UInt16 数据类型,而不考虑字典配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名称。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值;
如果没有对应项,则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性值,或者该值与属性数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUInt16OrDefault
引入于:v1.1
将字典属性值转换为 UInt16 数据类型,而不论字典配置如何;如果未找到该键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名。String或Tuple(String)id_expr— 键值表达式。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUInt32
引入于:v1.1
将字典属性值转换为 UInt32 数据类型,不受字典配置影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名称。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素内容。
如果 ClickHouse 无法解析属性值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetUInt32OrDefault
引入版本:v1.1
将字典属性值转换为 UInt32 数据类型,无论字典如何配置;如果未找到该键,则返回指定的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典列名。String或Tuple(String)id_expr— 键值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUInt64
自 v1.1 起提供
将字典的属性值转换为 UInt64 数据类型,而不受字典配置的影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。一个返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性的值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUInt64OrDefault
自 v1.1 引入
将字典的属性值转换为 UInt64 数据类型,而不受字典配置影响;如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典的名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性的值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性值,或该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetUInt8
引入版本:v1.1
将字典属性值转换为 UInt8 数据类型,无论字典如何配置。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中属性(列)的名称。String或Tuple(String)id_expr— 键的值。一个返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值;
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析属性值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictGetUInt8OrDefault
自 v1.1 引入
将字典属性值转换为 UInt8 数据类型,而不受字典配置的限制;如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典的名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回字典键类型值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUUID
自 v1.1 起提供
将字典属性值转换为 UUID 数据类型,而不受字典配置的影响。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键的值。返回字典键类型的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回在字典配置中为该属性指定的 <null_value> 元素的内容。
如果 ClickHouse 无法解析该属性的值,或该值与属性数据类型不匹配,则会抛出异常。
示例
使用示例
dictGetUUIDOrDefault
自 v1.1 引入
将字典属性值转换为 UUID 数据类型,而不受字典配置影响;如果未找到键,则返回提供的默认值。
语法
参数
dict_name— 字典名称。Stringattr_name— 字典中列的名称。String或Tuple(String)id_expr— 键值。返回与字典键类型相同的值或元组值的表达式(取决于字典配置)。Expression或Tuple(T)default_value_expr— 当字典中不包含键为id_expr的行时返回的值。Expression或Tuple(T)
返回值
返回与 id_expr 对应的字典属性值,
否则返回作为 default_value_expr 参数传入的值。
如果 ClickHouse 无法解析属性的值,或者该值与属性的数据类型不匹配,则会抛出异常。
示例
用法示例
dictHas
引入版本:v1.1
检查指定键是否存在于字典中。
语法
参数
dict_name— 字典名称。Stringid_expr— 键值(key)。const String
返回值
如果键存在则返回 1,否则返回 0。UInt8
示例
检查字典中某个键是否存在
dictIsIn
引入版本:v1.1
检查字典中某个键在整个层级链上的祖先。
语法
参数
dict_name— 字典名称。Stringchild_id_expr— 要检查的键。Stringancestor_id_expr—child_id_expr键的假定祖先。const String
返回值
如果 child_id_expr 不是 ancestor_id_expr 的子节点,则返回 0;如果 child_id_expr 是 ancestor_id_expr 的子节点,或者 child_id_expr 与 ancestor_id_expr 相同,则返回 1。UInt8
示例
检查层级关系