以下の関数は、任意の数値型の引数に対して論理演算を行います。
戻り値は UInt8 型の 0 または 1 で、場合によっては NULL になります。
引数としての 0 は false、0 以外の値は true と見なされます。
and
導入バージョン: v1.1.0
2 つ以上の値の論理積を計算します。
設定 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) の実行時に、ゼロ除算例外は発生しません。
引数としての 0 は false と見なされ、0 以外の値は true と見なされます。
構文
and(val1, val2[, ...])引数
val1, val2[, ...]— 少なくとも2つの値からなるリスト。Nullable((U)Int*)またはNullable(Float*)
戻り値
以下を返します。
- 少なくとも1つの引数が
falseと評価される場合は0 falseと評価される引数がなく、少なくとも1つの引数がNULLの場合はNULL- それ以外の場合は
1Nullable(UInt8)
例
基本的な使い方
SELECT and(0, 1, -2);0NULL を使用する場合
SELECT and(NULL, 1, 10, -2);\Nnot
導入バージョン: v1.1.0
値の論理否定を返します。
引数に 0 を指定した場合は false、0 以外の値は true と見なされます。
構文
not(val)引数
戻り値
次を返します。
1、valがfalseと評価される場合0、valがtrueと評価される場合NULL、valがNULLの場合。Nullable(UInt8)
例
基本的な使い方
SELECT NOT(1);0or
導入バージョン: v1.1.0
2 つ以上の値の論理和を計算します。
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) の実行時に、ゼロ除算例外はスローされません。
引数の 0 は false と見なされ、0 以外の値は true と見なされます。
構文
or(val1, val2[, ...])引数
val1, val2[, ...]— 少なくとも2つの値からなるリスト。Nullable((U)Int*)またはNullable(Float*)
戻り値
返される値:
- 少なくとも1つの引数が
trueと評価される場合は1 - すべての引数が
falseと評価される場合は0 - すべての引数が
falseと評価され、かつ少なくとも1つの引数がNULLの場合はNULLNullable(UInt8)
例
基本的な使い方
SELECT or(1, 0, 0, 2, NULL);1NULL を使用する場合
SELECT or(0, NULL);\Nxor
導入バージョン: v1.1.0
2 つ以上の値の論理排他的論理和を計算します。
入力値が 3 つ以上ある場合、この関数はまず最初の 2 つの値に xor を適用し、その結果に 3 つ目の値を xor し、以降も同様に続けます。
引数としての 0 は false と見なされ、0 以外の値は true と見なされます。
構文
xor(val1, val2[, ...])引数
val1, val2[, ...]— 少なくとも 2 つの値のリスト。Nullable((U)Int*)またはNullable(Float*)
戻り値
返される値:
1、2 つの値の場合: 一方の値がfalseと評価され、もう一方がそうでない場合0、2 つの値の場合: 両方の値がfalseと評価されるか、両方ともtrueの場合- 少なくとも 1 つの入力が
NULLの場合はNULL。Nullable(UInt8)
例
基本的な使い方
SELECT xor(0, 1, 1);0