Eine Suchbedingung (search_condition) verknüpft Aussagen, die wahr, falsch oder undefiniert sein können. Es können Zeilen in einer Tabelle gefunden werden, die mehrere Bedingungen erfüllen, die durch AND oder OR verknüpft werden.
<search_condition> ::= <boolean_term> | <search_condition> OR <boolean_term>
<boolean_term> ::= <boolean_factor> | <boolean_term> AND <boolean_factor>
boolean_factor: Ermitteln der zu verknüpfenden booleschen Werte (BOOLEAN) bzw. deren Negation (NOT).
In einer WHERE-Klausel werden Prädikate auf eine gegebene Zeile oder auf eine Gruppe von Zeilen einer Tabelle, die mit Hilfe der GROUP-Klausel gebildet wurde, angewendet. Diese Resultate werden mit den angegebenen booleschen Operatoren (AND, OR, NOT) verknüpft.
Bei fehlender Klammerung ist die Priorität der Operatoren folgendermaßen festgelegt: NOT bindet stärker als AND und OR, AND bindet stärker als OR. Bei gleicher Priorität erfolgt die Auswertung von links nach rechts.
NOT
x |
NOT(x) |
wahr |
falsch |
falsch |
wahr |
undefiniert |
undefiniert |
x AND y
x y |
falsch |
undefiniert |
wahr |
falsch |
falsch |
falsch |
falsch |
undefiniert |
falsch |
undefiniert |
undefiniert |
wahr |
falsch |
undefiniert |
wahr |
x OR y
x y |
falsch |
undefiniert |
wahr |
falsch |
falsch |
undefiniert |
wahr |
undefiniert |
undefiniert |
undefiniert |
wahr |
wahr |
wahr |
wahr |
wahr |
Beispieltabelle customer
Angabe von Kunden, die in New York wohnen oder ein Guthaben haben:
SELECT firstname, name, city, account FROM customer
WHERE city = 'New York' OR account > 0
FIRSTNAME |
NAME |
CITY |
ACCOUNT |
Jenny |
Porter |
New York |
100.00 |
? |
DATASOFT |
Dallas |
4813.50 |
Michael |
Porter |
New York |
0.00 |
George |
Howe |
New York |
-315.40 |
Joseph |
Peters |
Los Angeles |
650.00 |
Mark |
Griffith |
New York |
0.00 |
? |
TOOLware |
Los Angeles |
3770.50 |
Rose |
Brown |
Hollywood |
440.00 |
Angabe von Kunden, die in Hollywood wohnen und ein Guthaben haben:
SELECT firstname, name, city, account FROM customer
WHERE city = 'Hollywood' AND account > 0
FIRSTNAME |
NAME |
CITY |
ACCOUNT |
Rose |
Brown |
Hollywood |
440.00 |