比較条件(Comparison Condition)は、ある式と別の式を比較し、TRUE、FALSE、またはUNKNOWNのいずれかの結果を返します。比較条件は、単純比較条件と組み合わせ比較条件に分類されます。
説明
比較条件は、BLOBデータ型をサポートしていません。ただし、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})