| 
                           					 
                            
  |  
                        				  
                         [NOT] 
                         |  
                        				  
                        
                           					 
                            
  |  
                        				  
                        predicate | 
                           					 
                            
  |  
                        				  
                        
                           					 
                            
  |  
                        				
                     |||
| (search-condition) | ||||||||
| search-condition | 
                           					 
                            
  |  
                        				  
                         AND 
                         |  
                        				  
                        
                           					 
                            
  |  
                        				  
                        search-condition | ||||
 OR 
                         |  
                        				
                     ||||||||
This document covers the following topics:
A search-condition can
                  			 consist of a simple predicate
                  			 or multiple search-conditions. Multiple
                  			 search-conditions are combined with the
                  			 Boolean operators AND, OR and NOT, and
                  			 can contain parentheses if required to indicate a desired order of
                  			 evaluation.
               
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 [NOT]
                              						BETWEEN
                              						scalar-expression AND
                              						scalar-expression 
                         |  
                        				  
                     |||||||||||||||
scalar-expression
                              						IS [NOT]
                              						DISTINCT FROM
                              						scalar-expression 
                         |  
                        				  
                     |||||||||||||||
                           						
                              						column-reference [NOT]
                              						LIKE  
                         |  
                        					 
                        
                           						
                            
  |  
                        					 
                        
                            
  |  
                        					 
                         [ESCAPE
                              						atom] |  
                        				  
                     ||||||||||||
                           						
                              						column-referenceIS [NOT] NULL  
                         |  
                        				  
                     |||||||||||||||
                           						
                              						scalar-expression [NOT]
                              						IN  |  
                        					 
                        
                           						
                            
  |  
                        					 
                        subquery | 
                            
  |  
                        					 
                        ||||||||||||
| 
                            
  |  
                        					 
                        
                           						
                            
  |  
                        					 
                        
                           						
                            
  |  
                        					 
                        ,... |  
                        					 
                        
                            
  |  
                        					 
                        |||||||||||
| scalar-expression comparison | 
                           						
                            
  |  
                        					 
                        
                           						
                           						
                             
                              						    |  
                        					 
                        
                            
  |  
                        					 
                        subquery | |||||||||||
EXISTS
                           						subquery | 
                        					 
                        				  
                     |||||||||||||||
XMLEXISTS
                           						(xquery-expression-constant{BY
                              						REF|PASSING
                           						xquery-argument,...})
                         |  
                        				  
                     |||||||||||||||
A predicate specifies a
                  			 condition that can be "true", "false" or
                  			 "unknown".
               
In a search-condition,
                  			 a predicate can consist of a simple or
                  			 complex comparison operation or other kinds of conditions.
               
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' 
    ... 
               		  Note:
 The percent sign (%) may conflict with
                     			 Natural terminal commands. If
                     			 so, you must define a terminal command control character different from
                     			 %; see Changing the Terminal
                        			 Command Control Character in the Terminal
                        			 Commands documentation.
                  
The individual predicates are explained in the following topics (for further information on predicates, please refer to the relevant literature). According to the syntax above, they are called as follows:
| 
                            
  |  
                        						
                        scalar-expression | comparison | scalar-expression | 
                            
  |  
                        					 
                     ||
| row-value-expression | comparison | row-value-expression | ||||
A comparison predicate compares two values or a set of values with another set of values.
In the syntax diagram above,
                  				comparison
                  				can be one of the following operators:
               
 = 
                         |  
                        						
                        equal to | 
 < 
                         |  
                        						
                        less than | 
 > 
                         |  
                        						
                        greater than | 
 <= 
                         |  
                        						
                        less than or equal to | 
 >= 
                         |  
                        						
                        greater than or equal to | 
 <>  
                         |  
                        						
                        not equal to | 
See information on
                  				scalar-expression.
               
| (select-expression) | 
A subquery is a
                  				  select-expression that is nested inside
                  				  another such 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 
               				For further information, see Select Expressions.
                           						  
                              						  scalar-expression [NOT] BETWEEN
                           						  
                              						  scalar-expression  AND 
                              						  scalar-expression  
                         |  
                        					 
                     
A BETWEEN predicate compares a value with a range of
                  				values.
               
See information on
                  				scalar-expression.
               
| 
                            
  |  
                        						
                        
                              						  scalar-expression IS [NOT] DISTINCT FROM
                           						  
                              						  scalar-expression  
                         |  
                        						
                        
                            
  |  
                        					 
                     
row-value-expression
                           						  IS [NOT]
                           						  DISTINCT FROM
                           						  row-value-expression
                              						   
                         |  
                        					 
                     
A DISTINCT predicate compares a value with another
                  				value or a set of values with another set of values.
               
                           						  
                              						  column-reference [NOT]
                              						  LIKE 
                         |  
                        						
                        
                           						  
                            
  |  
                        						
                        atom | 
                           						  
                            
  |  
                        						
                         [ESCAPE atom] 
                         |  
                        					 
                     
| special-register | 
A LIKE predicate searches for strings that have a
                  				certain pattern.
               
See information on
                  				column-reference,
                  				atom
                  				and special-register.
               
                           						  
                              						  column-reference IS [NOT] NULL 
                         |  
                        					 
                     
A NULL predicate tests for null values.
               
If the compiler option DB2ARRY is set to
                  				  ON, it is possible to specify an Natural array or an fixed index
                  				  range of an array as atom. The Natural SQL compiler will then decompose the
                  				  array or fixed index range into a list of scalar host variables. 
               
See information on
                  				column-reference.
               
| 
                            
  |  
                        						
                        scalar-expression  [NOT] IN 
                         |  
                        						
                        
                            
  |  
                        						
                        subquery | 
                            
  |  
                        						
                        
                            
  |  
                        					 
                     
| row-value-expression | |||||
row-value-expression
                           						   [NOT] IN
                           						  subquery | 
                        						
                        					 
                     |||||
An IN predicate compares a value or a set of values
                  				with a collection of values.
               
See information on
                  				scalar-expression,
                  				atom
                  				and special-register.
               
See information on
                  				subquery.
               
| 
                            
  |  
                        						
                        scalar-expression | comparison | 
                            
  |  
                        						
                         
                           						  
                             
                              							   |  
                        						
                        
                            
  |  
                        						
                        subquery | 
                            
  |  
                        					 
                     
| row-value-expression | = |  
                        						
                        
                            
  |  
                        						
                         
                           						  
                             
                              							   |  
                        						
                        
                            
  |  
                        						
                        subquery | ||
| row-value-expression | <> |  
                        						
                        ALL |  
                        						
                        subquery | ||||
A quantified predicate compares a value or a set of values with a collection of values.
See information on
                  				scalar-expression,
                  				comparison
                  				and subquery.
               
 EXISTS
                           						  
                              						  subquery  
                         |  
                        					 
                     
An EXISTS predicate tests for the existence of
                  				certain rows.
               
The EXISTS predicate evaluates to true only if the
                  				result of evaluating the subquery is
                  				not empty; that is, if there exists at least one record (row) in the
                  				FROM table of the subquery
                  				satisfying the search condition of the WHERE clause of this
                  				subquery.
               
 Example of 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 
... 
               			 See information on
                  				subquery.
               
XMLEXISTS
                           						  (xquery-expression-constant
                           						  
                         |  
                        						
                        
                           						  
                            
  |  
                        						
                        BY
                              						  REF |  
                        						
                        
                           						  
                            
  |  
                        						
                        ) |  
                        					 
                     
PASSING
                           						  xquery-argument,...
                         |  
                        					 
                     
| 
                           						  
                            
  |  
                        						
                        xquery-context-item-expression | 
                           						  
                            
  |  
                        					 
                     
xquery-context-item-expression
                           						  AS identifier |  
                        					 
                     
The XMLEXISTS predicate belongs to the Natural SQL
                  				Extended Set.
               
The XMLEXISTS predicate tests whether an
                  				XPATH expression returns a sequence of one or more items. For
                  				further information, see the IBM DB2 XML Guide.