論理関数
以下の関数は任意の数値型の引数に対して論理演算を行います。それらは UInt8 または場合によっては NULL として 0 または 1 を返します。
引数としてのゼロは 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(val1, val2...)
別名: AND 演算子。
引数
返される値
- 少なくとも一つの引数が
falseの場合は0、 - 引数が全て
falseでなく少なくとも一つがNULLの場合はNULL、 - それ以外の場合は
1。
例
SELECT and(0, 1, -2);
結果:
┌─and(0, 1, -2)─┐
│ 0 │
└───────────────┘
NULL を含めた場合:
SELECT and(NULL, 1, 10, -2);
結果:
┌─and(NULL, 1, 10, -2)─┐
│ ᴺᵁᴸᴸ │
└──────────────────────┘
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(val1, val2...)
別名: OR 演算子。
引数
返される値
- 少なくとも一つの引数が
trueの場合は1、 - 引数が全て
falseの場合は0、 - 引数が全て
falseで少なくとも一つがNULLの場合はNULL。
例
SELECT or(1, 0, 0, 2, NULL);
結果:
┌─or(1, 0, 0, 2, NULL)─┐
│ 1 │
└──────────────────────┘
NULL を含めた場合:
SELECT or(0, NULL);
結果:
┌─or(0, NULL)─┐
│ ᴺᵁᴸᴸ │
└─────────────┘
not
値の論理否定を計算します。
構文
not(val);
別名: 否定演算子。
引数
返される値
valがfalseの場合は1、valがtrueの場合は0、valがNULLの場合はNULL。
例
SELECT NOT(1);
結果:
┌─not(1)─┐
│ 0 │
└────────┘
xor
二つ以上の値の排他的論理和を計算します。二つ以上の入力値については、まず最初の二つの値に対して xor を行い、次にその結果と三つ目の値について xor を行うというように進めます。
構文
xor(val1, val2...)
引数
返される値
- 二つの値について、一方が
falseで他方がtrueの場合は1、 - 二つの値がどちらも
falseまたはtrueの場合は0、 - 少なくとも一つの入力が
NULLの場合はNULL。
例
SELECT xor(0, 1, 1);
結果:
┌─xor(0, 1, 1)─┐
│ 0 │
└──────────────┘