|
|
[NOT]
|
|
predicate |
|
|
|||
| (search-condition) | ||||||||
| search-condition |
|
AND |
|
search-condition | ||||
OR |
||||||||
このドキュメントでは、次のトピックについて説明します。
search-condition は、単純な predicate、またはブール演算子 AND、OR、NOT、およびカッコ(評価の順序を示す必要がある場合)を組み合わせた複数の search-conditions で構成できます。
DEFINE DATA LOCAL 01 NAME (A20) 01 AGE (I2) END-DEFINE ... SELECT * INTO NAME, AGE FROM SQL-PERSONNEL WHERE AGE = 32 AND NAME > 'K' END-SELECT ...
predicate には "true"(真)、"false"(偽)、"unknown"(不明)の条件を指定します。
search-condition の predicate は、単純な比較演算または複雑な比較演算、あるいは他の種類の条件で構成できます。
SELECT NAME, AGE
INTO VIEW PERS
FROM SQL-PERSONNEL
WHERE AGE BETWEEN 20 AND 30
0R AGE IN ( 32, 34, 36 )
AND NAME LIKE '%er'
...
注意:
パーセント記号(%)は Natural 端末コマンドと混同するおそれがあります。その場合は、% とは異なる端末コマンド制御文字を定義する必要があります。詳細については、『端末コマンド』ドキュメントの「端末コマンド制御文字の変更」を参照してください。
各属性については、以降のトピックで説明します(属性の詳細については、関連文献を参照してください)。上記の構文に関する属性は次のように呼ばれます。
|
|
scalar-expression | comparison | scalar-expression |
|
||
| row-value-expression |
|
= |
|
row-value-expression | ||
| < > | ||||||
比較属性は、2 つの値、または値のセットを別の値のセットと比較します。
詳細については、scalar-expression を参照してください。
|
|
= |
|
< |
||
> |
||
<= |
||
>= |
||
<> |
comparison は次のいずれかの演算子です。
= |
等しい |
|---|---|
< |
より小さい |
> |
より大きい |
<= |
より小さいまたは等しい |
>= |
より大きいまたは等しい |
<> |
等しくない |
| (select-expression) |
subquery は同様の他の式内でネストされた select-expression です。
DEFINE DATA LOCAL
1 #NAME (A20)
1 #PERSNR (I4)
END-DEFINE
...
SELECT NAME, PERSNR
INTO #NAME, #PERSNR
FROM SQL-PERSONNEL
WHERE PERSNR IN
( SELECT PERSNR
FROM SQL-AUTOMOBILES
WHERE COLOR = 'black' )
...
END-SELECT
詳細については、「選択式」を参照してください。
scalar-expression [NOT] BETWEEN scalar-expression AND scalar-expression |
BETWEEN 属性は範囲値で値を比較します。
詳細については、scalar-expression を参照してください。
scalar-expression IS [NOT] DISTINCT FROM scalar-expression |
DISTINCT 属性は、ある値を別の値と比較するか、またはある値のセットを別の値のセットと比較します。
column-reference [NOT] LIKE atom |
LIKE 属性は特定のパターンを持つ文字列を検索します。
詳細については、column-reference および atom を参照してください。
column-reference IS [NOT] NULL |
NULL 属性は空値のテストを行います。
詳細については、column-reference を参照してください。
scalar-expression [NOT] IN |
|
subquery |
|
| (atom) |
IN 属性は、値または値のセットを値の集合と比較します。
詳細については、scalar-expression および atom を参照してください。
詳細については、subquery を参照してください。
| scalar-expression comparison |
|
ALL |
|
subquery |
ANY |
||||
SOME |
数量属性は、値または値のセットを値の集合と比較します。
詳細については、scalar-expression、comparison、および subquery を参照してください。
EXISTS subquery |
EXISTS 属性は特定の行の存在についてテストを行います。
EXISTS 属性は、subquery の評価結果が空でない場合、つまり、この subquery の WHERE 節の検索条件を満たす subquery の FROM テーブルに最低 1 つのレコード(行)が存在する場合にのみ、真であると評価します。
EXISTS の例:
DEFINE DATA LOCAL
1 #NAME (A20)
END-DEFINE
...
SELECT NAME
INTO #NAME
FROM SQL-PERSONNEL
WHERE EXISTS
( SELECT *
FROM SQL-EMPLOYEES
WHERE PERSNR > 1000
AND NAME < 'L' )
...
END-SELECT
...
詳細については、subquery を参照してください。