プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

SQL条件

条件には、次の構文で示すとおり、複数の書式があります。

condition::=

condition.gifの説明が続きます。
図「condition.gif」の説明

Oracle Textがインストールされている場合、CONTAINSCATSEARCHMATCHESなど、この製品に含まれる組込み演算子を使用して条件を作成できます。Oracle Text要素の詳細は、『Oracle Textリファレンス』を参照してください。

Oracle Expression Filterを使用している場合、この製品に含まれる組込みEVALUATE演算子を使用して条件を作成できます。詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。

次の項では、様々な書式の条件を説明します。SQL文にconditionが含まれる場合は、適切な条件構文を使用する必要があります。

条件は、次の文のWHERE句で使用できます。

また、SELECT文の次の句で使用することもできます。


注意:

NLS_COMPNLS_SORTの設定を組み合せた値によって、文字をソートおよび比較するルールが決まります。ご使用のデータベースのNLS_COMPLINGUISTICが設定されている場合、この章のエンティティはすべてNLS_SORTパラメータによって指定されるルールに従って解釈されます。NLS_COMPLINGUISTICに設定されていない場合、ファンクションはNLS_SORTの設定に関係なく解釈されます。NLS_SORTは、明示的に設定できます。明示的に設定されていない場合は、NLS_LANGUAGEから導出されます。これらの設定の詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

条件は、論理データ型であるともいえます。ただし、Oracle Databaseで、正式にこのようなデータ型をサポートしているわけではありません。

次のような単純な条件は、常にTRUEに評価されます。

1 = 1 

次のやや複雑な条件は、salaryの値をsalary*commission_pctの値に加算し(NULLは0で置き換える)、その合計が定数25000より大きいかどうかを判断します。

NVL(salary, 0) + NVL(salary + (salary*commission_pct, 0) > 25000)

論理条件を使用すると、複数の条件を単一の条件に結合できます。たとえば、次のようにAND条件を使用して2つの条件を結合できます。

(1 = 1) AND (5 < 7) 

有効な条件の例を次に示します。

name = 'SMITH' 
employees.department_id = departments.department_id 
hire_date > '01-JAN-08' 
job_id IN ('SA_MAN', 'SA_REP') 
salary BETWEEN 5000 AND 10000
commission_pct IS NULL AND salary = 2100

関連項目:

文に指定する条件の制限については、第10章から第19章にある各文の説明を参照してください。

条件の優先順位

優先順位とは、同じ式の中の異なる条件をOracle Databaseが評価する順序を意味します。複数の条件を含む式を評価するとき、Oracleは優先順位の高い条件を評価した後で、優先順位の低い条件を評価します。優先順位の等しい条件は、式の中で左から右に評価されます。ただし、次の例外があります。

  • ANDを使用して接続された複数の条件については、左から右への評価は保証されません。

  • ORを使用して接続された複数の条件については、左から右への評価は保証されません。

表7-1に、SQL条件を優先順位の高い方から順に示します。同じ行に示されている条件の優先順位は同じです。表に示すとおり、Oracleは条件の前に演算子を評価します。

表7-1 SQL条件の優先順位

条件の種類 用途

SQL演算子は、SQL条件の前に評価されます。

「演算子の優先順位」を参照

=、!=、<、>、<=、>=

比較

IS [NOT] NULL、LIKE、[NOT] BETWEEN、[NOT] IN、EXISTS、IS OF type

比較

NOT

指数、論理否定

AND

論理積

OR

論理和