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