メインコンテンツまでスキップ
メインコンテンツまでスキップ

論理関数

以下の関数は、任意の数値型の引数に対して論理演算を行います。 これらは、UInt8として0または1を返すか、場合によってはNULLを返します。

引数としてのゼロはfalseと見なされ、非ゼロの値はtrueと見なされます。

and

導入されたバージョン: v1.1

二つ以上の値の論理的結合を計算します。

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)を実行する際にゼロ除算の例外は発生しません。 引数としてのゼロはfalseと見なされ、非ゼロの値はtrueと見なされます。

構文

and(val1, val2[, ...])

引数

戻り値

次を返します:

  • 0、もし少なくとも1つの引数がfalseに評価される場合
  • NULL、もし全ての引数がfalseに評価されず、かつ少なくとも1つの引数がNULLの場合
  • 1、それ以外の場合 Nullable(UInt8)

基本的な使用法

SELECT and(0, 1, -2);
0

NULLを使用する場合

SELECT and(NULL, 1, 10, -2);
ᴺᵁᴸᴸ

not

導入されたバージョン: v1.1

値の論理的否定を計算します。 引数としてのゼロはfalseと見なされ、非ゼロの値はtrueと見なされます。

構文

not(val)

引数

戻り値

次を返します:

  • 1、もしvalfalseに評価される場合
  • 0、もしvaltrueに評価される場合
  • NULL、もしvalNULLである場合。 Nullable(UInt8)

基本的な使用法

SELECT NOT(1);
0

or

導入されたバージョン: v1.1

二つ以上の値の論理的選言を計算します。

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と見なされます。

構文

or(val1, val2[, ...])

引数

戻り値

次を返します:

  • 1、もし少なくとも1つの引数がtrueに評価される場合
  • 0、もし全ての引数がfalseに評価される場合
  • NULL、もし全ての引数がfalseに評価され、かつ少なくとも1つの引数がNULLの場合 Nullable(UInt8)

基本的な使用法

SELECT or(1, 0, 0, 2, NULL);
1

NULLを使用する場合

SELECT or(0, NULL);
ᴺᵁᴸᴸ

xor

導入されたバージョン: v1.1

二つ以上の値の論理的排他的選言を計算します。 二つ以上の入力値がある場合、関数は最初の2つの値をxorし、その結果を3番目の値とxorするなどの操作を行います。 引数としてのゼロはfalseと見なされ、非ゼロの値はtrueと見なされます。

構文

xor(val1, val2[, ...])

引数

戻り値

次を返します:

  • 1、二つの値の場合: もし一方の値がfalseに評価され、もう一方が評価されない場合
  • 0、二つの値の場合: もし両方の値がfalseに評価されるか、両方がtrueに評価される場合
  • NULL、もし少なくとも一つの入力がNULLである場合。 Nullable(UInt8)

基本的な使用法

SELECT xor(0, 1, 1);
0