AND and OR logical operators

Two or more relations can be logically joined using the logical operators AND and OR. Logical operators combine relations according to the following rules:

• The ampersand (&) symbol is a valid substitute for the logical operator AND. The vertical bar ( | ) is a valid substitute for the logical operator OR.
• Only one logical operator can be used to combine two relations. However, multiple relations can be combined into a complex logical expression.
• Regardless of the number of relations and logical operators used to build a logical expression, the result is either true, false, or indeterminate because of missing values.
• Operators or expressions cannot be implied. For example, X EQ 1 OR 2 is illegal; you must specify X EQ 1 OR X EQ 2.
• The ANY and RANGE functions can be used to simplify complex expressions.

AND . Both relations must be true for the complex expression to be true.

OR . If either relation is true, the complex expression is true.

The following table lists the outcomes for AND and OR combinations.

Table 1. Logical outcomes
Expression Outcome Expression Outcome

true AND true

= true

true OR true

= true

true AND false

= false

true OR false

= true

false AND false

= false

false OR false

= false

true AND missing

= missing

true OR missing

= true*

missing AND missing

= missing

missing OR missing

= missing

false AND missing

= false*

false OR missing

= missing

* Expressions where the outcome can be evaluated with incomplete information. See the topic Missing values in logical expressions for more information.

Example

DATA LIST FREE /var1 var2 var3.
BEGIN DATA
1 1 1
1 2 1
1 2 3
4 2 4
END DATA.
SELECT IF var1 = 4 OR ((var2 > var1) AND (var1 <> var3)).
• Any case that meets the first condition--var1 = 4--will be selected, which in this example is only the last case.
• Any case that meets the second condition will also be selected. In this example, only the third case meets this condition, which contains two criteria: var2 is greater than var1 and var1 is not equal to var3.