SQL条件
条件には、次の構文で示すとおり、複数の書式があります。
condition::=
Oracle Textがインストールされている場合、CONTAINS
、CATSEARCH
、MATCHES
など、この製品に含まれる組込み演算子を使用して条件を作成できます。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条件の前に評価されます。 |
「演算子の優先順位」を参照 |
|
比較 |
|
比較 |
|
指数、論理否定 |
|
論理積 |
|
論理和 |