比较函数
比较规则
下面的比较函数会返回 0 或 1,类型为 UInt8。只有同一组内的值可以相互比较(例如 UInt16 和 UInt64),不同组之间不能比较(例如 UInt16 和 DateTime)。
可以对数字和字符串进行比较,也可以比较字符串与日期、日期与时间。
对于元组和数组,比较方式为字典序比较,也就是说会依次比较左侧和右侧元组/数组中的每个对应元素。
可以进行比较的类型包括:
- 数值和十进制数(numbers 和 decimals)
- 字符串和定长字符串(strings 和 fixed strings)
- 日期(dates)
- 日期时间(dates with times)
- 元组(字典序比较,tuples)
- 数组(字典序比较,arrays)
字符串按字节逐个比较。如果某个字符串包含 UTF-8 编码的多字节字符,这可能会导致意外结果。 如果字符串 S1 以另一个字符串 S2 作为前缀,则在比较时认为 S1 大于 S2。
equals
在 v1.1 中引入
比较两个值是否相等。
语法
参数
返回值
如果 a 等于 b,则返回 1,否则返回 0(类型为 UInt8)。
示例
使用示例
greater
引入版本:v1.1
比较两个值是否满足大于关系。
语法
参数
返回值
如果 a 大于 b,则返回 1,否则返回 0,类型为 UInt8。
示例
用法示例
greaterOrEquals
自 v1.1 引入
比较两个值是否满足“大于等于”关系。
语法
参数
返回值
返回值类型为 UInt8:如果 a 大于或等于 b,则返回 1,否则返回 0。
示例
用法示例
isDistinctFrom
引入于:v25.9
对两个值执行空值安全的“不等于”比较。
如果两个值彼此不同(不相等),包括其中一个为 NULL 而另一个不是,则返回 true。
如果两个值相等,或二者均为 NULL,则返回 false。
语法
参数
返回值
如果两个值不同,则返回 true,并将 NULL 视为可比较的值:
- 如果 x != y,则返回
true。 - 如果 x 或 y 中恰好有一个为 NULL,则返回
true。 - 如果 x = y,或 x 和 y 都为 NULL,则返回
false。Bool
示例
针对数字和 NULL 的基本用法
isNotDistinctFrom
引入于:v25.9
对两个值执行空安全(NULL-safe)的“等于”比较。
如果两个值相等,则返回 true,包括两者都为 NULL 的情况。
如果两个值不相等,或者只有其中一个为 NULL,则返回 false。
语法
参数
返回值
在将 NULL 视为可比较值的前提下,如果两个值相等则返回 true:
- 如果 x = y,则返回
true。 - 如果 x 和 y 都为 NULL,则返回
true。 - 如果 x != y,或者 x 和 y 中只有一个为 NULL,则返回
false。Bool
示例
在数字和 NULL 上的基本用法
less
引入版本:v1.1
用于比较两个值是否满足“小于”关系。
语法
参数
返回值
当 a 小于 b 时返回 1,否则返回 0,类型为 UInt8
示例
用法示例
lessOrEquals
自 v1.1 起引入
用于比较两个值是否满足小于等于关系。
语法
参数
返回值
如果 a 小于或等于 b,则返回 1,否则返回 0(UInt8)
示例
使用示例
notEquals
自 v1.1 版本引入
用于比较两个值是否不相等。
语法
参数
返回值
当 a 不等于 b 时返回 1,否则返回 0。返回类型为 UInt8
示例
使用示例