条件には、次の構文で示すとおり、複数の書式があります。
condition::=
Oracle Textがインストールされている場合、CONTAINS
、CATSEARCH
、MATCHES
など、この製品に含まれる組込み演算子を使用して条件を作成できます。Oracle Text要素の詳細は、『Oracle Textリファレンス』を参照してください。
Oracle Expression Filterを使用している場合、この製品に含まれる組込みEVALUATE
演算子を使用して条件を作成できます。詳細は、『Oracle Databaseルール・マネージャおよび式フィルタ開発者ガイド』を参照してください。
次の項では、様々な書式の条件を説明します。SQL文にcondition
が含まれる場合は、適切な条件構文を使用する必要があります。
条件は、次の文のWHERE
句で使用できます。
DELETE
SELECT
UPDATE
また、SELECT
文の次の句で使用することもできます。
WHERE
START
WITH
CONNECT
BY
HAVING
注意: NLS_COMP とNLS_SORT の設定を組み合せた値によって、文字をソートおよび比較するルールが決まります。ご使用のデータベースのNLS_COMP にLINGUISTIC が設定されている場合、この章のエンティティはすべてNLS_SORT パラメータによって指定されるルールに従って解釈されます。NLS_COMP がLINGUISTIC に設定されていない場合、ファンクションは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
優先順位とは、同じ式の中の異なる条件をOracle Databaseが評価する順序を意味します。複数の条件を含む式を評価するとき、Oracleは優先順位の高い条件を評価した後で、優先順位の低い条件を評価します。優先順位の等しい条件は、式の中で左から右に評価されます。ただし、次の例外があります。
AND
を使用して接続された複数の条件については、左から右への評価は保証されません。
OR
を使用して接続された複数の条件については、左から右への評価は保証されません。
表7-1に、SQL条件を優先順位の高い方から順に示します。同じ行に示されている条件の優先順位は同じです。表に示すとおり、Oracleは条件の前に演算子を評価します。
表7-1 SQL条件の優先順位
条件の種類 | 用途 |
---|---|
SQL演算子は、SQL条件の前に評価されます。 |
「演算子の優先順位」を参照 |
|
比較 |
|
比較 |
|
指数、論理否定 |
|
論理積 |
|
論理和 |