Suchbedingungen

[NOT]

predicate

 

(search-condition)  
search-condition  

AND

search-condition
  OR

Dieser Abschnitt behandelt folgende Themen:


search-condition

Eine search-condition kann aus einer einfachen Bedingung (predicate) bestehen oder aus mehreren search-conditions, die durch die Boole’schen Operatoren AND, OR und NOT verknüpft werden, wobei die Reihenfolge der Auswertung außerdem durch entsprechende Klammerung bestimmt werden kann.

Beispiel:

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

scalar-expression comparison

scalar-expression

 

subquery  
scalar-expression [NOT] BETWEEN scalar-expression AND scalar-expression
scalar-expression IS [NOT] DISTINCT FROM scalar-expression
column-reference [NOT] LIKE

atom

[ESCAPE atom]
special-register
column-reference IS [NOT] NULL    
scalar-expression [NOT] IN

subquery

 
(

atom

  )  
special-register ,  
scalar-expression comparison

ALL

subquery    
ANY  
SOME  
  XMLEXISTS (xquery-expression-constant BY REF)      

Ein predicate gibt eine Bedingung an, die "wahr", "falsch" oder "unbekannt" sein kann.

In einer search-condition kann ein predicate aus einer einfachen oder komplexen Vergleichsoperation oder anderen Arten von Bedingung bestehen.

Beispiel:

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' 
    ...

Anmerkung
Das Prozentzeichen (%) kann zu Konflikten mit Natural-Terminalkommandos führen. In diesem Fall müssen Sie als Steuerzeichen für Terminalkommandos ein anderes Zeichen als % definieren (siehe Ändern des Terminalkommando-Steuerzeichens ).

Die einzelnen predicates sind auf den folgenden Seiten beschrieben (weitere Informationen zu predicates finden Sie in der betreffenden Literatur). Entsprechend der obigen Syntax heißen sie wie nachfolgend beschrieben.

comparison-predicate

scalar-expression comparison scalar-expression

row-value-expression

=

row-value-expression
<>

Ein comparison-predicate vergleicht zwei Werte oder einen Satz Werte mit einem anderen Satz Werte.

Siehe Informationen zu scalar-expression.

comparison

=

<
>
<=
>=
< >

comparison kann einer der folgenden Operatoren sein:

= gleich
< kleiner als
> größer als
<= kleiner gleich
>= größer gleich
<>   ungleich

subquery

(select-expression)

Eine subquery ist eine select-expression innerhalb einer anderen select-expression.

Beispiel:

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

Weitere Informationen siehe SELECT-Ausdrücke.

BETWEEN-predicate

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

Ein BETWEEN-predicate vergleicht einen Wert mit einem Bereich von Werten.

Siehe Informationen zu scalar-expression.

DISTINCT-predicate

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

row-value-expression IS [NOT] DISTINCT FROM row-value-expression

Ein DISTINCT-predicate vergleicht einen Wert mit einem anderen Wert oder einen Satz Werte mit einem anderen Satz Werte.

LIKE-predicate

column-reference [NOT] LIKE

atom

[ESCAPE atom]
special-register

Ein LIKE-predicate sucht nach Zeichenketten, die ein bestimmtes Muster haben.

Siehe Informationen zu column-reference, atom und special-register.

NULL-predicate

column-reference

IS [NOT] NULL

ISNULL
NOTNULL

Ein NULL-predicate prüft auf Nullwerte.

Wenn die Compiler-Option DB2ARRY auf ON gesetzt ist, kann ein Natural-Array oder ein feststehender Indexbereich eines Arrays als atom angegeben werden. Der Natural SQL Compiler zerlegt dann das Array oder den feststehenden Indexbereich in eine Liste mit skalaren host-variables.

Siehe Informationen zu column-reference.

IN-predicate

scalar-expression  [NOT] IN

subquery

row-value-expression
row-value-expression  [NOT] IN subquery

Ein IN-predicate vergleicht einen Wert oder einen Satz Werte mit einer Sammlung von Werten.

Siehe Informationen zu scalar-expression, atom und special-register.

Siehe Informationen zu subquery.

quantified-predicate

scalar-expression comparison

SOME
ANY
ALL

subquery

row-value-expression =

SOME
ANY

subquery
row-value-expression <> ALL subquery

Ein quantified-predicate vergleicht einen Wert oder einen Satz Werte mit einer Sammlung von Werten.

Siehe Informationen zu scalar-expression, comparison und subquery.

EXISTS-predicate

EXISTS subquery

Ein EXISTS-predicate prüft, ob bestimmte Zeilen vorhanden sind.

Die Bedingung des EXISTS-predicate kann nur erfüllt werden, wenn das Ergebnis der ausgewerteten subquery nicht leer ist, d.h. wenn mindestens ein Datensatz (eine Zeile) in der FROM-Tabelle der subquery die WHERE-Klausel-Suchbedingung dieser subquery erfüllt.

Beispiel für 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 
...

Siehe Informationen zu subquery.

XMLEXISTS-predicate

XMLEXISTS (xquery-expression-constant

BY REF

)
PASSING xquery-argument,...

xquery-argument

xquery-context-item-expression

xquery-context-item-expression AS identifier

Das XMLEXISTS-predicate gehört zum Natural SQL Extended Set.

Das XMLEXISTS-predicate prüft, ob ein XPATH-Ausdruck eine Folge von einem oder mehreren items zurückgibt. Weitere Informationen siehe IBM Db2 XML Guide.

On this page