Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

論理関数

以下の関数は、任意の数値型の引数に対して論理演算を行います。 戻り値は 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[, ...])

引数

戻り値

以下を返します。

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

基本的な使い方

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

NULL を使用する場合

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

not

導入バージョン: v1.1.0

値の論理否定を返します。 引数に 0 を指定した場合は false、0 以外の値は true と見なされます。

構文

not(val)

引数

戻り値

次を返します。

  • 1valfalse と評価される場合
  • 0valtrue と評価される場合
  • NULLvalNULL の場合。 Nullable(UInt8)

基本的な使い方

SELECT NOT(1);
0

or

導入バージョン: 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[, ...])

引数

戻り値

返される値:

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

基本的な使い方

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

NULL を使用する場合

SELECT or(0, NULL);
\N

xor

導入バージョン: v1.1.0

2 つ以上の値の論理排他的論理和を計算します。 入力値が 3 つ以上ある場合、この関数はまず最初の 2 つの値に xor を適用し、その結果に 3 つ目の値を xor し、以降も同様に続けます。 引数としての 0 は false と見なされ、0 以外の値は true と見なされます。

構文

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

引数

戻り値

返される値:

  • 1、2 つの値の場合: 一方の値が false と評価され、もう一方がそうでない場合
  • 0、2 つの値の場合: 両方の値が false と評価されるか、両方とも true の場合
  • 少なくとも 1 つの入力が NULL の場合は NULLNullable(UInt8)

基本的な使い方

SELECT xor(0, 1, 1);
0
Navigation