検索条件

[NOT]

predicate

 

(search-condition)  
search-condition  

AND

search-condition
  OR

このドキュメントでは、次のトピックについて説明します。


検索条件

search-condition は、単純な predicate、またはブール演算子 ANDORNOT、およびカッコ(評価の順序を示す必要がある場合)を組み合わせた複数の 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 
...

属性

scalar-expression comparison

scalar-expression

 

subquery  
scalar-expression  [NOTBETWEENscalar-expression  AND scalar-expression
column-reference [NOT] LIKE atom
column-reference IS [NOT] NULL
scalar-expression [NOT] IN

subquery

 
(atom, )  
scalar-expression comparison

ALL

 
ANY subquery
SOME  
EXISTS subquery

predicate には "true"(真)、"false"(偽)、"unknown"(不明)の条件を指定します。

search-conditionpredicate は、単純な比較演算または複雑な比較演算、あるいは他の種類の条件で構成できます。

例:

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

詳細については、「選択式」を参照してください。

BETWEEN 属性

scalar-expression [NOT] BETWEEN scalar-expression AND scalar-expression

BETWEEN 属性は範囲値で値を比較します。

詳細については、scalar-expression を参照してください。

DISTINCT 属性

scalar-expression IS [NOT] DISTINCT FROM scalar-expression

DISTINCT 属性は、ある値を別の値と比較するか、またはある値のセットを別の値のセットと比較します。

LIKE 属性

column-reference [NOT] LIKE atom

LIKE 属性は特定のパターンを持つ文字列を検索します。

詳細については、column-reference および atom を参照してください。

NULL 属性

column-reference IS [NOT] NULL

NULL 属性は空値のテストを行います。

詳細については、column-reference を参照してください。

IN 属性

scalar-expression [NOT] IN

subquery

(atom)

IN 属性は、値または値のセットを値の集合と比較します。

詳細については、scalar-expression および atom を参照してください。

詳細については、subquery を参照してください。

数量属性

scalar-expression comparison

ALL

subquery
ANY
SOME

数量属性は、値または値のセットを値の集合と比較します。

詳細については、scalar-expressioncomparison、および subquery を参照してください。

EXISTS 属性

EXISTS subquery

EXISTS 属性は特定の行の存在についてテストを行います。

EXISTS 属性は、subquery の評価結果が空でない場合、つまり、この subqueryWHERE 節の検索条件を満たす subqueryFROM テーブルに最低 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 を参照してください。