MIN and MAX Operators
Use the MIN or MAX operators to find the minimum or maximum value of two
quantities. Surround the operators with the two quantities whose minimum or maximum
value you want to know.
The MIN operator returns the lower of the two values.
The MAX operator returns the higher of two values.
For example, if A is less than B, then the following would return the value of A:
where x = (a min b);
Note: The symbol representation >< is not supported, and <> is interpreted as “not equal
to.”
Concatenation Operator
The concatenation operator concatenates character values. You indicate the
concatenation operator as follows:
|| (two OR symbols)
!! (two exclamation marks)
¦¦ (two broken vertical bars).
For example:
where name = 'John'||'Smith';
Prefix Operators
The plus sign (+) and minus sign (–) can be either prefix operators or arithmetic
operators. They are prefix operators when they appear at the beginning of an expression
or immediately preceding an open parenthesis. A prefix operator is applied to the
variable, constant, SAS function, or parenthetic expression.
where z = −(x + y);
Note: The NOT operator is also considered a prefix operator.
Combining Expressions By Using Logical
Operators
Syntax
You can combine or modify WHERE expressions by using the logical operators (also
called Boolean operators) AND, OR, and NOT. The basic syntax of a compound
WHERE expression is as follows:
WHERE where-expression-1 AND | OR | NOT where-expression-n
AND combines two conditions by finding observations that satisfy both conditions. For
example:
where skill eq 'java' and years eq 4;
OR combines two conditions by finding observations that satisfy either condition or
both. For example:
188 Chapter 11 WHERE-Expression Processing
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

Get SAS 9.4 Language Reference, 6th Edition now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.