SQL条件

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

condition::=

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

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

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

  • DELETE

  • SELECT

  • UPDATE

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

  • WHERE

  • START WITH

  • CONNECT BY

  • HAVING

条件は、論理データ型であるともいえます。ただし、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

すべてのSQL文のすべての部分ですべての条件が受け入れられるわけではありません。該当する文における条件の制限事項の詳細は、このマニュアルの特定のSQL文に関する項を参照してください。

条件の優先順位

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

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

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

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

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

条件の種類 目的

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

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

=, !=, <, >, <=, >=,

比較

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

比較

NOT

指数、論理否定

AND

論理積

OR

論理和