逻辑函数
下面的函数对任意数值类型参数执行逻辑运算。
它们返回 UInt8 类型的 0 或 1,在某些情况下返回 NULL。
当参数为零时视为 false,非零值视为 true。
and
引入版本:v1.1.0
计算两个或多个值的逻辑与运算。
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。
语法
参数
返回值
返回:
- 如果
val求值结果为false,返回1 - 如果
val求值结果为true,返回0 - 如果
val为NULL,返回NULL。Nullable(UInt8)
示例
基本用法
or
引入版本:v1.1.0
计算两个或多个值的逻辑“或”运算。
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,非 0 值被视为 true。
语法
参数
val1, val2[, ...]— 一个包含至少两个值的列表。Nullable((U)Int*)或Nullable(Float*)
返回值
返回:
1,如果至少有一个参数求值为true0,如果所有参数求值均为falseNULL,如果所有参数求值均为false且至少有一个参数为NULLNullable(UInt8)
示例
基本用法
含 NULL
xor
引入自:v1.1.0
计算两个或多个值的逻辑异或值。
对于多于两个的输入值,函数会先对前两个值进行 xor 运算,然后将结果与第三个值进行 xor 运算,以此类推。
作为参数传入的 0 被视为 false,非零值被视为 true。
语法
参数
val1, val2[, ...]— 至少包含两个值的列表。Nullable((U)Int*)或Nullable(Float*)
返回值
返回:
1,对于两个值:如果其中一个值求值结果为false且另一个不是0,对于两个值:如果两个值的求值结果都为false或都为trueNULL,如果至少一个输入为NULL。Nullable(UInt8)
示例
基本用法