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

論理関数

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

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

and

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)を実行する際にゼロによる割り算の例外が発生しません。

構文

and(val1, val2...)

エイリアス: AND演算子

引数

  • val1, val2, ... — 少なくとも2つの値のリスト。IntUIntFloat、またはNullable

戻り値

  • 0、少なくとも1つの引数がfalseに評価される場合、
  • NULL、どの引数もfalseに評価されず、少なくとも1つの引数がNULLである場合、
  • 1、それ以外の場合。

タイプ: UInt8またはNullable(UInt8)。

SELECT and(0, 1, -2);

結果:

┌─and(0, 1, -2)─┐
│             0 │
└───────────────┘

NULLを使用した場合:

SELECT and(NULL, 1, 10, -2);

結果:

┌─and(NULL, 1, 10, -2)─┐
│                 ᴺᵁᴸᴸ │
└──────────────────────┘

or

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)を実行する際にゼロによる割り算の例外が発生しません。

構文

or(val1, val2...)

エイリアス: OR演算子

引数

  • val1, val2, ... — 少なくとも2つの値のリスト。IntUIntFloat、またはNullable

戻り値

  • 1、少なくとも1つの引数がtrueに評価される場合、
  • 0、すべての引数がfalseに評価される場合、
  • NULL、すべての引数がfalseに評価され、少なくとも1つの引数がNULLである場合。

タイプ: UInt8またはNullable(UInt8)。

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);

エイリアス: 否定演算子

引数

戻り値

  • 1valfalseに評価される場合、
  • 0valtrueに評価される場合、
  • NULLvalNULLである場合。

タイプ: UInt8またはNullable(UInt8)。

SELECT NOT(1);

結果:

┌─not(1)─┐
│      0 │
└────────┘

xor

2つ以上の値の論理排他的和を計算します。2つ以上の入力値がある場合、関数は最初の2つの値をxorし、その結果を3つ目の値とxorします。

構文

xor(val1, val2...)

引数

  • val1, val2, ... — 少なくとも2つの値のリスト。IntUIntFloat、またはNullable

戻り値

  • 1、2つの値の場合: 1つの値がfalseに評価され、もう1つの値が評価されない場合、
  • 0、2つの値の場合: 両方の値がfalseに評価されるか、両方の値がtrueに評価される場合、
  • NULL、入力のいずれかがNULLである場合。

タイプ: UInt8またはNullable(UInt8)。

SELECT xor(0, 1, 1);

結果:

┌─xor(0, 1, 1)─┐
│            0 │
└──────────────┘