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 以上かつ expr が 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種類があります:
%:任意の長さの文字列にマッチします。_:単一の文字にマッチします。
例:
obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
+------------------------------+
| 'ab%' LIKE 'abc%' ESCAPE 'c' |
+------------------------------+
| 1 |
+------------------------------+
1 row in set