5.7 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/ja/sql-reference/functions/logical-functions | 110 | 論理 |
論理関数
以下の関数は任意の数値型の引数に対して論理演算を行います。それらは UInt8 または場合によっては NULL
として 0 または 1 を返します。
引数としてのゼロは false
とみなされ、ゼロ以外の値は true
とみなされます。
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)
を実行してもゼロ除算例外は発生しません。
構文
and(val1, val2...)
別名: AND 演算子。
引数
返される値
- 少なくとも一つの引数が
false
の場合は0
、 - 引数が全て
false
でなく少なくとも一つがNULL
の場合はNULL
、 - それ以外の場合は
1
。
例
SELECT and(0, 1, -2);
結果:
┌─and(0, 1, -2)─┐
│ 0 │
└───────────────┘
NULL
を含めた場合:
SELECT and(NULL, 1, 10, -2);
結果:
┌─and(NULL, 1, 10, -2)─┐
│ ᴺᵁᴸᴸ │
└──────────────────────┘
or
二つ以上の値の論理和を計算します。
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 演算子。
引数
返される値
- 少なくとも一つの引数が
true
の場合は1
、 - 引数が全て
false
の場合は0
、 - 引数が全て
false
で少なくとも一つがNULL
の場合はNULL
。
例
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);
別名: 否定演算子。
引数
返される値
val
がfalse
の場合は1
、val
がtrue
の場合は0
、val
がNULL
の場合はNULL
。
例
SELECT NOT(1);
結果:
┌─not(1)─┐
│ 0 │
└────────┘
xor
二つ以上の値の排他的論理和を計算します。二つ以上の入力値については、まず最初の二つの値に対して xor を行い、次にその結果と三つ目の値について xor を行うというように進めます。
構文
xor(val1, val2...)
引数
返される値
- 二つの値について、一方が
false
で他方がtrue
の場合は1
、 - 二つの値がどちらも
false
またはtrue
の場合は0
、 - 少なくとも一つの入力が
NULL
の場合はNULL
。
例
SELECT xor(0, 1, 1);
結果:
┌─xor(0, 1, 1)─┐
│ 0 │
└──────────────┘