逻辑函数
下面的函数对任意数值类型的参数执行逻辑操作。它们返回0或1,作为UInt8,在某些情况下返回NULL
。
零值被视为false
,非零值被视为true
。
and
计算两个或多个值的逻辑与。
设置 short_circuit_function_evaluation 控制是否使用短路评估。如果启用,val_i
仅在(val_1 AND val_2 AND ... AND val_{i-1})
为 true
时进行评估。例如,通过短路评估,在执行查询 SELECT and(number = 2, intDiv(1, number)) FROM numbers(5)
时不会引发除以零的异常。
语法
别名: AND 运算符。
参数
返回值
0
,如果至少一个参数评估为false
,NULL
,如果没有参数评估为false
且至少一个参数为NULL
,1
,否则。
示例
结果:
带NULL
:
结果:
or
计算两个或多个值的逻辑或。
设置 short_circuit_function_evaluation 控制是否使用短路评估。如果启用,val_i
仅在((NOT val_1) AND (NOT val_2) AND ... AND (NOT val_{i-1}))
为 true
时进行评估。例如,通过短路评估,在执行查询 SELECT or(number = 0, intDiv(1, number) != 0) FROM numbers(5)
时不会引发除以零的异常。
语法
别名: OR 运算符。
参数
返回值
1
,如果至少一个参数评估为true
,0
,如果所有参数评估为false
,NULL
,如果所有参数评估为false
且至少一个参数为NULL
。
示例
结果:
带NULL
:
结果:
not
计算一个值的逻辑非。
语法
别名:否定运算符。
参数
返回值
1
,如果val
评估为false
,0
,如果val
评估为true
,NULL
,如果val
为NULL
。
示例
结果:
xor
计算两个或多个值的逻辑异或。对于超过两个输入值的情况,该函数首先对前两个值进行异或运算,然后将结果与第三个值进行异或,以此类推。
语法
参数
返回值
1
,对于两个值:如果其中一个值评估为false
而另一个不评估为false
,0
,对于两个值:如果两个值都评估为false
或都评估为true
,NULL
,如果至少一个输入值为NULL
。
示例
结果: