逻辑函数
以下函数对任意数值类型参数执行逻辑运算。它们返回 0 或 1 作为 UInt8,或者在某些情况下返回 NULL。
将 0 作为参数视为 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) 时不会抛出除零异常。将 0 作为参数视为 false,非零值视为 true。
语法
参数
val1, val2[, ...]— 至少两个值的列表。Nullable((U)Int*)或Nullable(Float*)
返回值
返回值
0,如果至少一个参数评估为falseNULL,如果没有任何参数评估为false并且至少一个参数为NULL1,否则Nullable(UInt8)
示例
基本用法
带有 NULL
not
引入于:v1.1
计算一个值的逻辑非。将 0 作为参数视为 false,非零值视为 true。
语法
参数
返回值
返回值
1,如果val评估为false0,如果val评估为trueNULL,如果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) 时不会抛出除零异常。将 0 作为参数视为 false,非零值视为 true。
语法
参数
val1, val2[, ...]— 至少两个值的列表。Nullable((U)Int*)或Nullable(Float*)
返回值
返回值
1,如果至少一个参数评估为true0,如果所有参数评估为falseNULL,如果所有参数评估为false并且至少一个参数为NULLNullable(UInt8)
示例
基本用法
带有 NULL
xor
引入于:v1.1
计算两个或多个值的逻辑异或。对于两个以上的输入值,该函数首先异或前两个值,然后将结果与第三个值异或,依此类推。将 0 作为参数视为 false,非零值视为 true。
语法
参数
val1, val2[, ...]— 至少两个值的列表。Nullable((U)Int*)或Nullable(Float*)
返回值
返回值
1,对于两个值:如果其中一个值为false且另一个不为0,对于两个值:如果两个值都评估为false或都为trueNULL,如果至少有一个输入为NULL。Nullable(UInt8)
示例
基本用法