跳转到主要内容
以下函数对任意数值类型的参数执行逻辑运算。 它们返回 01,结果类型为 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[, ...])
参数 返回值 返回:
  • 0,如果至少有一个参数的求值结果为 false
  • NULL,如果没有任何参数的求值结果为 false,且至少有一个参数为 NULL
  • 1,否则 Nullable(UInt8)
示例 基本用法
Query
SELECT and(0, 1, -2);
Response
0
包含 NULL
Query
SELECT and(NULL, 1, 10, -2);
Response
ᴺᵁᴸᴸ

not

引入版本:v1.1.0 计算一个值的逻辑否定。 当作为参数时,零被视为 false,非零值被视为 true 语法
not(val)
参数 返回值 返回:
  • 如果 val 的计算结果为 false,则返回 1
  • 如果 val 的计算结果为 true,则返回 0
  • 如果 valNULL,则返回 NULLNullable(UInt8)
示例 基本用法
Query
SELECT NOT(1);
Response
0

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) 不会抛出除零异常。 参数值为零时视为 false,非零值视为 true 语法
or(val1, val2[, ...])
参数 返回值 返回:
  • 1,如果至少有一个参数求值为 true
  • 0,如果所有参数求值都为 false
  • NULL,如果所有参数求值都为 false,且至少有一个参数为 NULL Nullable(UInt8)
示例 基本用法
Query
SELECT or(1, 0, 0, 2, NULL);
Response
1
含 NULL
Query
SELECT or(0, NULL);
Response
ᴺᵁᴸᴸ

xor

引入版本:v1.1.0 计算两个或多个值的逻辑异或。 对于两个以上的输入值,该函数会先对前两个值执行 xor,然后将结果再与第三个值执行 xor,依此类推。 参数为零时视为 false,非零值视为 true 语法
xor(val1, val2[, ...])
参数 返回值 返回:
  • 1,对于两个值:如果其中一个值的计算结果为 false,而另一个不是
  • 0,对于两个值:如果两个值的计算结果都为 false 或都为 true
  • NULL,如果至少有一个输入为 NULLNullable(UInt8)
示例 基本用法
Query
SELECT xor(0, 1, 1);
Response
0
最后修改于 2026年6月10日