跳转到主要内容

比较规则

下面的比较函数返回 01,返回类型为 UInt8。只有同一组内的值才能进行比较 (例如 UInt16UInt64) ,不能跨组比较 (例如 UInt16DateTime) 。 数值和字符串之间可以比较,字符串也可以与日期比较,日期也可以与时间进行比较。 对于元组和数组,比较采用字典序,也就是说会依次比较左侧和右侧元组/数组中对应的各个 元素。 以下类型可以比较:
  • 数值和十进制数
  • 字符串和定长字符串
  • 日期
  • 带时间的日期
  • 元组 (按字典序比较)
  • 数组 (按字典序比较)
字符串按字节逐个比较。如果其中一个字符串包含 UTF-8 编码的多字节字符,可能会产生不符合预期的结果。 如果字符串 S1 以另一个字符串 S2 作为前缀,则认为 S1 比 S2 长。

equals

首次引入版本:v1.1.0 比较两个值是否相等。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 如果 a 等于 b,则返回 1;否则返回 0UInt8 示例 用法示例
Query
Response

globalIn

引入版本:v1.1.0 in 相同,但在分布式查询中使用全局集合分发。该集合会发送到所有远程服务器。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 在该集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

globalInIgnoreSet

引入版本:v1.1.0 in 相同,但在分布式查询中使用全局集合分发机制。该集合会被发送到所有远程服务器。 这是 IgnoreSet Variant,用于在不创建集合的情况下进行类型分析。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 在集合中,则返回 1;否则返回 0。 UInt8 示例 基本用法
Query
Response

globalNotIn

引入版本:v1.1.0 notIn 相同,但在分布式查询中使用全局集合分发机制。该集合会发送到所有远程服务器。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 不在集合中,则返回 1,否则返回 0。UInt8 示例 基本用法
Query
Response

globalNotInIgnoreSet

引入版本:v1.1.0 notIn 相同,但在分布式查询中使用全局集合分发机制。该集合会被发送到所有远程服务器。 这是 IgnoreSet Variant,用于在不创建集合的情况下进行类型分析。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 不在该集合中,则返回 1,否则返回 0。UInt8 示例 基本用法
Query
Response

globalNotNullIn

引入版本:v1.1.0 notNullIn 相同,但在分布式查询中使用全局集合分发机制。该 Set 会发送到所有远程服务器。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 不在该集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

globalNotNullInIgnoreSet

引入版本:v1.1.0 notNullIn 相同,但在分布式查询中使用全局集合分发机制。该集合会发送到所有远程服务器。 这是 IgnoreSet Variant,用于在不创建集合的情况下进行类型分析。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 不在该集合中,则返回 1;否则返回 0。 UInt8 示例 基本用法
Query
Response

globalNullIn

引入版本:v1.1.0 nullIn 相同,但在分布式查询中使用全局集合分发机制。该集合会发送到所有远程服务器。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 在该集合中,则返回 1,否则返回 0。 UInt8 示例 基本用法
Query
Response

globalNullInIgnoreSet

引入版本:v1.1.0 nullIn 相同,但在分布式查询中使用全局集合分发。该集合会被发送到所有远程服务器。 这是用于类型分析且不会创建该集合的 IgnoreSet Variant。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 在该集合中,返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

greater

引入版本:v1.1.0 比较两个值,判断前者是否大于后者。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 如果 a 大于 b,则返回 1;否则返回 0 UInt8 示例 使用示例
Query
Response

greaterOrEquals

引入版本:v1.1.0 比较两个值是否满足大于等于关系。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 如果 a 大于或等于 b,则返回 1;否则返回 0UInt8 示例 使用示例
Query
Response

in

Introduced in: v1.1.0 检查左操作数是否属于右操作数 Set。若属于则返回 1,否则返回 0。左操作数中的 NULL 值会被跳过 (视为不在该集合中) 。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 在该集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

inIgnoreSet

Introduced in:v1.1.0 检查左操作数是否属于右操作数集合。如果属于,则返回 1,否则返回 0。左操作数中的 NULL 值会被跳过 (视为不在集合中) 。 这是 IgnoreSet 的一种Variant,用于类型分析且不会创建集合。 Syntax
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 在该集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

isDistinctFrom

引入版本:v25.11.0 对两个值执行 NULL 安全的“不等于”比较。 如果两个值不同 (即不相等) ,则返回 true,包括一个值为 NULL 而另一个值不为 NULL 的情况。 如果两个值相等,或两者均为 NULL,则返回 false 语法
参数
  • x — 要比较的第一个值。可以是任意 ClickHouse 数据类型。Any
  • y — 要比较的第二个值。可以是任意 ClickHouse 数据类型。Any
返回值 如果两个值不同,则返回 true,其中 NULL 也视为可比较值:
  • 如果 x != y,则返回 true
    • 如果 x 或 y 中恰好一个为 NULL,则返回 true
    • 如果 x = y,或者 x 和 y 都为 NULL,则返回 falseBool
示例 数字和 NULL 的基本用法
Query
Response

isNotDistinctFrom

引入版本:v23.8.0 对两个值执行 NULL 安全的“相等”比较。 如果两个值相等 (包括两者都为 NULL 的情况) ,则返回 true。 如果两个值不同,或其中恰好一个为 NULL,则返回 false 语法
参数
  • x — 要比较的第一个值。可以是任意 ClickHouse 数据类型。Any
  • y — 要比较的第二个值。可以是任意 ClickHouse 数据类型。Any
返回值 如果两个值相等,则返回 true;NULL 也会被视为可比较值:
  • 如果 x = y,则返回 true
    • 如果 x 和 y 均为 NULL,则返回 true
    • 如果 x != y,或者 x 和 y 中恰好有一个为 NULL,则返回 falseBool
示例 数字和 NULL 的基本用法
Query
Response

less

引入版本:v1.1.0 比较两个值,判断是否为小于关系。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 a 小于 b,则返回 1;否则返回 0 UInt8 示例 使用示例
Query
Response

lessOrEquals

Introduced in: v1.1.0 比较两个值是否满足小于或等于关系。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 如果 a 小于或等于 b,则返回 1;否则返回 0UInt8 示例 使用示例
Query
Response

notEquals

引入版本:v1.1.0 比较两个值是否不相等。 语法
参数
  • a — 第一个值。* - b — 第二个值。*
返回值 如果 a 不等于 b,返回 1;否则返回 0UInt8 示例 使用示例
Query
Response

notIn

引入版本:v1.1.0 检查左操作数是否不属于右操作数集合。如果不在集合中,则返回 1,否则返回 0。左操作数中的 NULL 值会被跳过。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 不在该集合中,则返回 1,否则返回 0。UInt8 示例 基本用法
Query
Response

notInIgnoreSet

引入版本:v1.1.0 检查左操作数是否属于右操作数集合。若不在集合中,则返回 1,否则返回 0。左操作数中的 NULL 值会被跳过。 这是 IgnoreSet Variant,用于在不创建集合的情况下进行类型分析。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 不在该集合中,则返回 1;否则返回 0。 UInt8 示例 基本用法
Query
Response

notNullIn

首次引入版本:v1.1.0 检查左操作数是否不属于右操作数集合。与 notIn 不同,NULL 值不会被跳过:NULL 会与集合元素进行比较,且 NULL = NULL 的结果为 true。 语法
参数
  • x — 待检查的值。 - set — 值的集合。
返回值 如果 x 不在集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

notNullInIgnoreSet

引入版本:v1.1.0 检查左操作数是否不在右操作数集合中。与 notIn 不同,NULL 值不会被跳过:NULL 会与集合中的元素进行比较,并且 NULL = NULL 的结果为 true。 这是 IgnoreSet 的一个Variant,用于类型分析,且不会创建集合。 语法
参数
  • x — 要检查的值。 - set — 值集合。
返回值 如果 x 不在该集合中,则返回 1;否则返回 0。 UInt8 示例 基本用法
Query
Response

nullIn

引入版本:v1.1.0 检查左操作数是否属于右操作数集合。与 in 不同,NULL 值不会被跳过:NULL 会与集合元素进行比较,且 NULL = NULL 的结果为 true。 语法
参数
  • x — 要检查的值。 - set — 值的集合。
返回值 如果 x 在集合中,则返回 1;否则返回 0。UInt8 示例 基本用法
Query
Response

nullInIgnoreSet

引入版本:v1.1.0 检查左操作数是否属于右操作数集合。与 in 不同,NULL 值不会被跳过:NULL 会与集合中的元素进行比较,且 NULL = NULL 的结果为 true。 这是 IgnoreSet 的一个 Variant,用于在不创建集合的情况下进行类型分析。 语法
参数
  • x — 要检查的值。 - set — 一组值。
返回值 如果 x 在该集合中,则返回 1,否则返回 0。UInt8 示例 基本用法
Query
Response
最后修改于 2026年7月2日