比較条件(Comparison Condition)は、ある式と別の式を比較し、比較結果がTRUE、FALSE、またはUNKNOWNになります。比較条件は単純比較条件と組み合わせ比較条件に分類されます。
説明
比較条件は大規模オブジェクト(LOB)データ型をサポートしていません。ただし、PLプログラムを使用して CLOB データを比較できます。
数値式を比較する場合、OceanBaseデータベースは数値の優先順位に基づいて条件内の数値比較順序を決定します。BINARY_DOUBLE の優先順位が最も高く、次に BINARY_FLOAT、NUMBER の優先順位が最も低いです。
文字式を比較する場合、OceanBaseデータベースは文字データ型の比較ルールに基づいて行います。これには、比較前に式の文字セットがどのように統一されているか、バイナリおよび言語比較を選択するか、または空白埋め込みと非空白埋め込みの比較セマンティクスを選択するかが含まれます。
比較条件を使用して文字値を言語比較する場合、まずそれらをソートキーに変換してから比較します。比較プロセスは RAW データ型と似ています。ソートキーは関数 NLSSORT によって返される値です。2つの式が生成するソートキーのプレフィックスが同じ場合、値の残りの部分が異なっていても、それらは言語的に等しい可能性があります。
2つの非スカラータイプのオブジェクトが同じネームタイプを持ち、その要素間に一対一の対応関係が存在する場合、それらは比較可能です。ユーザー定義のオブジェクトタイプであるネストテーブルは、等しいまたは IN 条件で使用する場合、MAP メソッドを定義する必要があります。ネストテーブルの要素は互いに比較できます。
比較条件の詳細情報は以下の表に示されています。
| 条件タイプ | 機能 | 例 |
|---|---|---|
| = | 等しい | SELECT * FROM emp WHERE salary = 2000 ORDER BY empno; |
| != ^= <> | 等しくない | SELECT * FROM emp WHERE salary != 2000 ORDER BY empno; |
| > < | より大きい より小さい | SELECT * FROM emp WHERE salary > 2000 ORDER BY empno; SELECT * FROM emp WHERE salary < 2000 ORDER BY empno; |
| >= <= | 大きいかつ等しい 小さいかつ等しい | SELECT * FROM emp WHERE salary >=2000 ORDER BY empno; SELECT * FROM emp WHERE salary <=2000 ORDER BY empno; |
| ANY SOME | 値をリスト内の各値またはクエリが返す値と比較します。必ず =、!=、>、<、<=、>= で始める必要があります。その後には、1つ以上の値を返す式またはサブクエリを続けることができます。 クエリが行を返さない場合、計算結果はFALSEです。 | SELECT * FROM emp WHERE salary = ANY (SELECT salary FROM emp WHERE deptno = 30) ORDER BY empno; |
| ALL | 値をリスト内の各値またはクエリが返す値と比較します。 必ず =、!=、>、<、<=、>= で始める必要があります。 後ろには、1つ以上の値を返す式またはサブクエリを続けることができます。 クエリが行を返さない場合、計算結果はTRUEになります。 | SELECT * FROM emp WHERE salary >= ALL (1900, 3000) ORDER BY empno; |
シンプルな比較条件
シンプルな比較条件とは、単一の式と式のリストを比較する場合や、単一の式とサブクエリの結果を比較する場合を指します。
シンプルな比較条件の構文は以下のとおりです:
expr {= | != | ^= | <> | < | >= |} ( expression_list | subquery )
シンプルな比較条件において、単一の式と式のリストを比較する場合、その式のリスト内の各式は、演算子の左側にある式と数とデータ型が一致していなければなりません。また、単一の式とサブクエリの値を比較する場合、サブクエリが返す値も演算子の左側にある式と数とデータ型が一致していなければなりません。
グループ比較条件
グループ比較条件とは、単一の式または複数の式と、式のリストまたはサブクエリの結果の任意またはすべてのメンバーを比較する場合を指します。
グループ比較条件では、単一または複数の式と式のリストの任意またはすべてのメンバーを比較する場合、各式のリスト内の各式は、演算子の左側にある式と数とデータ型が一致していなければなりません。また、単一または複数の式とサブクエリの結果の任意またはすべてのメンバーを比較する場合、サブクエリが返す値も演算子の左側にある式と数とデータ型が一致していなければなりません。
グループ比較条件には、以下の2種類の構文があります:
expr {= | != | ^= | <> | < | >= | ANY | SOME | ALL } ({ expression_list | subquery})
(expr [, expr ]...){= | != | ^= | ANY | SOME | ALL} ({expression_list [, expression_list ]... |subquery})