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