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