比較条件

比較条件はある式を別の式と比較します。比較の結果は、TRUEFALSEまたはUNKNOWNになります。

ラージ・オブジェクト(LOB)は、比較条件ではサポートされていません。ただし、CLOBデータの比較では、PL/SQLプログラムを使用できます。

数式を比較する場合、Oracleは数値の優先順位を使用して、その条件がNUMBERBINARY_FLOATまたはBINARY_DOUBLEのうちどの値を比較するかを判断します。数値の優先順位の詳細は、数値の優先順位を参照してください。

文字式を比較する場合、Oracleはデータ型の比較規則で説明されている規則を使用します。この規則では、比較の前の式の文字セットの位置、バイナリ比較または言語比較(照合)の使用、空白埋め比較セマンティクスの使用および照合キーに課せられた制限による制約(エラーORA-12742: unable to create the collation keyのレポートなど)が定義されます。

非スカラー型の2つのオブジェクトが比較可能なのは、これらが同じ名前付きの型であり、要素が1対1で対応している場合です。また、ユーザー定義オブジェクト型のネストした表では、要素が比較可能な場合も、等式やIN条件で使用するMAPメソッドが定義されている必要があります。

関連項目:

MAPメソッドを使用したオブジェクトの比較の詳細は、『Oracle Databaseオブジェクト・リレーショナル開発者ガイド』を参照してください。

表6-2に、比較条件を示します。

表6-2 比較条件

条件の種類 目的

=

等価性をテストします。

SELECT *
  FROM employees
  WHERE salary = 2500
  ORDER BY employee_id;

!=

^=

<>

非等価性をテストします。

SELECT *
  FROM employees
  WHERE salary != 2500
  ORDER BY employee_id;

>

<

大小のテスト。

SELECT * FROM employees
  WHERE salary > 2500
  ORDER BY employee_id;
SELECT * FROM employees
  WHERE salary < 2500
  ORDER BY employee_id;

>=

<=

以上または以下のテスト。

SELECT * FROM employees
  WHERE salary >= 2500
  ORDER BY employee_id;
SELECT * FROM employees
  WHERE salary <= 2500
  ORDER BY employee_id;

op ANY

OP SOME

"op"は=、!=、>、<、<=、または>=のいずれかである必要があります。

op ANYは、左側の値をリスト内の各値、または問合せによって返される各値と比較します。どちらと比較するかは、条件opを使用して、右側で指定されます。

これらの比較のいずれかがTRUEを返す場合、op ANYTRUEを戻します。

これらの比較がすべてFALSEを返すか、右側の副問合せが行を返さない場合、op ANYFALSEを戻します。それ以外の場合、戻り値はUNKNOWNです。

op ANYop SOMEは同義です。

SELECT * FROM employees
  WHERE salary = ANY
  (SELECT salary 
   FROM employees
  WHERE department_id = 30)
  ORDER BY employee_id;

op ALL

"op"は=、!=、>、<、<=、または>=のいずれかである必要があります。

op ALLは、左側の値をリスト内の各値、または副問合せによって返される各値と比較します。どちらと比較するかは、条件opを使用して、右側で指定されます。

これらの比較のいずれかがFALSEを返す場合、op ANYFALSEを戻します。

これらの比較がすべてTRUEを返すか、右側の副問合せが行を返さない場合、op ALLTRUEを戻します。それ以外の場合、戻り値はUNKNOWNです。

SELECT * FROM employees
  WHERE salary >=
  ALL (1400, 3000)
  ORDER BY employee_id;

単純比較条件

単純比較条件は、式または副問合せの結果の比較方法を指定します。

simple_comparison_condition::=

expression_list::=

この条件の下の方の書式(演算子の左辺に1つの式を指定する書式)を使用する場合は、expression_listの上または下の方の書式を使用できます。この条件の下の方の書式(演算子の左辺に複数の式を指定する書式)を使用する場合は、expression_listの下の方の書式を使用する必要があります。どちらの場合も、expression_listの式は、演算子の左辺にある式と同じ数とデータ型で構成されている必要があります。副問合せを指定する場合、副問合せから戻される値は、演算子の左辺にある式と同じ数とデータで構成されている必要があります。

関連項目:

式の組合せの詳細は、式のリストを参照してください。副問合せの詳細は、SELECTを参照してください。

グループ比較条件

グループ比較条件は、リストまたは副問合せ内の任意またはすべてのメンバーの比較方法を指定します。

group_comparison_condition::=

expression_list::=

この条件の上の方の書式(演算子の左辺に1つの式を指定する書式)を使用する場合は、expression_listの上の方の書式を使用する必要があります。この条件の下の方の書式(演算子の左辺に複数の式を指定する書式)を使用する場合は、expression_listの下の方の書式を使用し、各expression_list内の式は、演算子の左辺にある式と同じ数とデータ型で構成されている必要があります。副問合せを指定する場合、副問合せから戻される値は、演算子の左辺にある式と同じ数とデータで構成されている必要があります。

関連項目: