where skill eq 'java' or years eq 4;
NOT modifies a condition by finding the complement of the specified criteria. You can
use the NOT logical operator in combination with any SAS and WHERE expression
operator. And you can combine the NOT operator with AND and OR. For example:
where skill not eq 'java' or years not eq 4;
The logical operators and their equivalent symbols are shown in the following table:
Table 11.4 Logical (Boolean) Operators
Symbol Mnemonic Equivalent
& AND
! or | or ¦ OR
^ or ~ or ¬ NOT
Processing Compound Expressions
When SAS encounters a compound WHERE expression (multiple conditions), the
software follows rules to determine the order in which to evaluate each expression.
When WHERE expressions are combined, SAS processes the conditions in a specific
order:
1. The NOT expression is processed first.
2. Then the expressions joined by AND are processed.
3. Finally, the expressions joined by OR are processed.
Using Parentheses to Control Order of Evaluation
Even though SAS evaluates logical operators in a specific order, you can control the
order of evaluation by nesting expressions in parentheses. That is, an expression
enclosed in parentheses is processed before one not enclosed. The expression within the
innermost set of parentheses is processed first, followed by the next deepest, moving
outward until all parentheses have been processed.
For example, suppose you want a list of all the Canadian sites that have both
SAS/GRAPH and SAS/STAT software, so you issue the following expression:
where product='GRAPH' or product='STAT' and country='Canada';
The result, however, includes all sites that license SAS/GRAPH software along with the
Canadian sites that license SAS/STAT software. To obtain the correct results, you can
use parentheses, which causes SAS to evaluate the comparisons within the parentheses
first, providing a list of sites with either product licenses, then the result is used for the
remaining condition:
where (product='GRAPH' or product='STAT') and country='Canada';
Combining Expressions By Using Logical Operators 189