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