OceanBaseデータベースは、一般的な比較演算子をサポートしています。
比較演算子の概要
OceanBaseデータベースの現在のバージョンでサポートされている比較演算子の詳細は、次の表のとおりです。
演算子 |
演算数 |
意味 |
NULL 参与运算时的结果 |
|---|---|---|---|
= |
二元 | 等しい | NULL |
<=> |
二元 | 安全等しい | 詳細は後述 |
<> / != |
二元 | 等しくない | NULL |
> |
二元 | 大なり | NULL |
>= |
二元 | 大なり等しい | NULL |
< |
二元 | 小なり | NULL |
<= |
二元 | 小なり等しい | NULL |
[NOT] IN |
二元 | 集合に含まれるかどうか | 詳細は後述 |
[NOT] BETWEEN AND |
三元 | 区間内にあるかどうか | 詳細は後述 |
[NOT] LIKE |
三元 | 文字列ワイルドカードのマッチング | 詳細は後述 |
IS [NOT] TRUE |
一元 | TRUE と等しいかどうか |
TRUE または FALSE |
IS [NOT] FALSE |
一元 | FALSE と等しいかどうか |
TRUE または FALSE |
IS [NOT] NULL |
一元 | NULL と等しいかどうか |
TRUE または FALSE |
説明
比較演算の結果は、1 (TRUE)、0 (FALSE)、または NULL です。演算子は数値と文字列に適用できます。必要に応じて、文字列は自動的に数値に変換され、数値は自動的に文字列に変換されます。デフォルトでは、文字列の比較は大文字小文字を区別せず、現在の文字セットを使用します。
以下は、一部の演算子の構文と、NULL が演算に参加する場合の結果の説明です。
<=>
安全等しい <=> について、NULL が演算に参加する場合、両方の演算数が NULL の場合は 1 を返し、一方の演算数が NULL の場合は 0 を返します。例:
obclient> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
+---------+---------------+------------+
| 1 <=> 1 | NULL <=> NULL | 1 <=> NULL |
+---------+---------------+------------+
| 1 | 1 | 0 |
+---------+---------------+------------+
1 row in set
[NOT] IN
IN の構文は以下のとおりです:
expr IN (value,...)
NOT IN 構文は NOT (expr IN (value,...))、すなわち expr NOT IN (value,...) と同等です。
IN 演算では、expr が value,... リスト内のいずれかの値と等しい場合は1(TRUE)を返し、そうでない場合は0(FALSE)を返します。expr が NULL の場合、結果は NULL となります。expr が NULL 以外であり、かつ集合に NULL が含まれる場合、集合内に expr と等しい非 NULL 値が存在すれば結果は TRUE、そうでなければ NULL となります。
value,... リスト内で引用符付き値と引用符なし値を混在させることは推奨されません。引用符付き値(例:文字列)と引用符なし値(例:数値)の比較ルールが異なるため、型の混在は一貫性のない結果を引き起こす可能性があります。
例:
obclient> SELECT 1 IN (1, NULL), 1 IN (2, NULL);
+----------------+----------------+
| 1 IN (1, NULL) | 1 IN (2, NULL) |
+----------------+----------------+
| 1 | NULL |
+----------------+----------------+
1 row in set
[NOT] BETWEEN AND
BETWEEN AND 構文は次のとおりです:
expr BETWEEN min AND max
NOT BETWEEN AND 構文は NOT (expr BETWEEN min AND max)、すなわち expr NOT BETWEEN min AND max と同等です。
BETWEEN AND 演算では、expr が min 以上かつ max 以下の場合、BETWEEN は1を返し、そうでない場合は0を返します。すべてのパラメータが同一の型である場合、(min <= expr AND expr <= max) 式と等価です。
expr が NULL である場合、または min と max がどちらも NULL の場合、結果は NULL となります。expr が NULL 以外であり、かつ min または max のどちらか一方だけが NULL の場合、expr と min/max のみで演算結果が一意に決まる場合はその結果を直接使用し、そうでない場合は NULL を返します。
例:
obclient> SELECT 1 BETWEEN 0 AND NULL, 1 BETWEEN 2 AND NULL;
+----------------------+----------------------+
| 1 BETWEEN 0 AND NULL | 1 BETWEEN 2 AND NULL |
+----------------------+----------------------+
| NULL | 0 |
+----------------------+----------------------+
1 row in set
[NOT] LIKE
LIKE 構文は次のとおりです:
expr LIKE pat [ESCAPE 'escape_char']
NOT LIKE 構文は NOT (expr LIKE pat [ESCAPE 'escape_char'])、すなわち expr NOT LIKE pat [ESCAPE 'escape_char'] と同等です。
LIKE は文字列ワイルドカードによるマッチングに使用されます。結果は1(TRUE)または0(FALSE)を返します。expr または pat が NULL の場合、結果は NULL となります。ESCAPE はエスケープ文字を定義するために使用されます。pat に escape_char が含まれている場合、マッチング時に escape_char の後に続く文字は通常の文字として処理されます。
ワイルドカードには以下の2種類があります:
%:任意の長さの文字列に一致します。_:1文字に一致します。
例:
obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
+------------------------------+
| 'ab%' LIKE 'abc%' ESCAPE 'c' |
+------------------------------+
| 1 |
+------------------------------+
1 row in set