逻辑函数
下面的函数对任意 numeric 类型的参数执行逻辑操作。它们返回 0
或 1
作为 UInt8
,在某些情况下返回 NULL
。
零作为参数被视为 false
,非零值被视为 true
。
and
引入于: v1.1
计算两个或多个值的逻辑结合。
设置 short_circuit_function_evaluation
控制是否使用短路计算。如果启用,只有在 (val_1 AND val_2 AND ... AND val_{i-1})
为 true
时,才会评估 val_i
。
例如,使用短路计算时,在执行查询 SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)
时不会抛出除零异常。零作为参数被视为 false
,非零值被视为 true
。
语法
参数
val1, val2[, ...]
— 至少两个值的列表。Nullable((U)Int*)
或Nullable(Float*)
返回值
返回:
0
,如果至少一个参数评估为false
NULL
,如果没有参数评估为false
且至少一个参数为NULL
1
,否则Nullable(UInt8)
示例
基本用法
与 NULL
not
引入于: v1.1
计算值的逻辑否定。零作为参数被视为 false
,非零值被视为 true
。
语法
参数
返回值
返回:
1
,如果val
评估为false
0
,如果val
评估为true
NULL
,如果val
为NULL
。Nullable(UInt8)
示例
基本用法
or
引入于: v1.1
计算两个或多个值的逻辑析取。
设置 short_circuit_function_evaluation
控制是否使用短路计算。如果启用,只有在 ((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))
为 true
时,才会评估 val_i
。
例如,使用短路计算时,在执行查询 SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)
时不会抛出除零异常。零作为参数被视为 false
,非零值被视为 true
。
语法
参数
val1, val2[, ...]
— 至少两个值的列表。Nullable((U)Int*)
或Nullable(Float*)
返回值
返回:
1
,如果至少一个参数评估为true
0
,如果所有参数评估为false
NULL
,如果所有参数评估为false
且至少一个参数为NULL
Nullable(UInt8)
示例
基本用法
与 NULL
xor
引入于: v1.1
计算两个或多个值的逻辑排他性析取。对于超过两个的输入值,该函数首先将前两个值进行异或运算,然后将结果与第三个值进行异或,依此类推。零作为参数被视为 false
,非零值被视为 true
。
语法
参数
val1, val2[, ...]
— 至少两个值的列表。Nullable((U)Int*)
或Nullable(Float*)
返回值
返回:
1
,对于两个值:如果其中一个值评估为false
,而另一个则不0
,对于两个值:如果两个值都评估为false
或都评估为true
NULL
,如果至少一个输入为NULL
。Nullable(UInt8)
示例
基本用法