OceanBaseデータベースは一般的な論理演算子をサポートしています。
論理演算子の概要
OceanBaseデータベースの現在のバージョンでサポートされている論理演算子の詳細は、次の表のとおりです。
演算子 |
操作数 |
含義 |
|---|---|---|
NOT/! |
一元 | 論理非 |
AND/&& |
二元 | 論理積 |
OR/|| |
二元 | 論理和 |
XOR |
多元 | 論理排他和 |
説明
SQLでは、すべての論理演算子の計算結果は TRUE、FALSE、または NULL (UNKNOWN) です。OceanBaseデータベースでは、これらを1 (TRUE)、0 (FALSE)、NULL として実装し、0以外の非 NULL 値をすべて TRUE と評価します。
制限
ANY 演算子は配列データ型でのみサポートされています。使用方法と例については、配列判定関数を参照してください。
NOT/!
操作数が0の場合、計算結果は1になります。操作数が0以外の場合、計算結果は0になり、NOT NULL は NULL を返します。
例:
obclient> SELECT NOT NULL;
+----------+
| NOT NULL |
+----------+
| NULL |
+----------+
1 row in set
obclient> SELECT ! (1+1);
+---------+
| ! (1+1) |
+---------+
| 0 |
+---------+
1 row in set
AND/&&
すべての操作数が0以外であり、かつ NULL でない場合、計算結果は1になります。1つ以上の操作数が0の場合、計算結果は0になります。それ以外の場合、NULL を返します。
例:
obclient> SELECT 1 AND NULL;
+------------+
| 1 AND NULL |
+------------+
| NULL |
+------------+
1 row in set
obclient> SELECT 0 AND NULL;
+------------+
| 0 AND NULL |
+------------+
| 0 |
+------------+
1 row in set
OR/||
両方の演算子が NULL でない場合、いずれか一方の演算子がゼロ以外の値を持つと結果は1となり、そうでない場合は0となります。NULL を含む演算式において、もう一方の演算子がゼロ以外の値を持つ場合、結果は1となり、そうでない場合は NULL となります。両方の演算子が NULL の場合、結果は NULL となります。
例:
obclient> SELECT 0 OR NULL;
+-----------+
| 0 OR NULL |
+-----------+
| NULL |
+-----------+
1 row in set
obclient> SELECT 1 OR NULL;
+-----------+
| 1 OR NULL |
+-----------+
| 1 |
+-----------+
1 row in set
XOR
いずれか一方の演算子が NULL の場合、NULL を返します。NULL 以外の演算子について、奇数個の演算子がゼロ以外の値を持つ場合、計算結果は1となり、そうでない場合は0を返します。
例:
obclient> SELECT 1 XOR NULL;
+------------+
| 1 XOR NULL |
+------------+
| NULL |
+------------+
1 row in set
obclient> SELECT 1 XOR 1 XOR 1;
+---------------+
| 1 XOR 1 XOR 1 |
+---------------+
| 1 |
+---------------+
1 row in set
説明
a XOR b は数学的に (a AND (NOT b)) OR ((NOT a) and b) と等しくなります。