Anfang des Inhaltsbereichs

IN-Prädikat (in_predicate) 

Das IN-Prädikat (in_predicate) prüft, ob ein Wert bzw. eine Werteliste in einer vorgegebenen Wertemenge bzw. Menge von Wertelisten enthalten ist.

Syntax

<in_predicate> ::=
  <expression> [NOT] IN <subquery>
| <expression> [NOT] IN <expression_list>
| <expression_list> [NOT] IN <subquery>
| <expression_list> [NOT] IN (<expression_list>,...)

expression, expression_list, subquery

Erläuterung

Die Subquery (subquery) muss eine Ergebnistabelle (siehe Ergebnistabellenname) liefern, die so viele Spalten enthält wie Werte durch den Ausdruck (expression) auf der linken Seite des Operators IN angegeben sind.

Jede auf der rechten Seite des Operators IN angegebene Werteliste muss so viele Werte enthalten, wie in der Werteliste auf der linken Seite des Operators IN angegeben sind.

·         x [NOT] IN S, wobei x <expression> und S <subquery> oder <expression_list>
Der Wert x und die Werte in S müssen miteinander vergleichbar sein.

·         x [NOT] IN S, wobei x <expression_list> mit den Werten x1, x2, ..., xn und S <subquery> (Menge von Wertelisten s) oder (<expression_list>,...) (Folge von Wertelisten s) mit den Wertelisten s: s1, s2, ..., sn
Ein Wert xm muss mit allen Werten sm vergleichbar sein.
x=s ist wahr, wenn xm=sm, m=1,...,n
x=s ist falsch, wenn es mindestens ein m gibt, für das xm=sm falsch ist
x=s ist undefiniert, wenn es kein m gibt, für das xm=sm falsch ist, und es mindestens ein m gibt, für das xm=sm undefiniert ist.

In der folgenden Aufstellung bedeutet ‘------‘, daß keine Aussage getroffen werden kann, wenn nur das Ergebnis des Vergleichs mit einem s bekannt ist.

 

Ergebnis der Funktion x IN S

x=s ist wahr für mindestens ein s

wahr

x=s ist wahr für alle s

wahr

S enthält NULL-Werte und x=s ist wahr für die übrigen s

wahr

S ist leer

falsch

x=s ist falsch für mindestens ein s

------

x=s ist falsch für alle s

falsch

S enthält NULL-Werte und x=s ist falsch für die übrigen s

undefiniert

x=s ist für kein s wahr und ist für wenigstens einen Wert s undefiniert

undefiniert

x NOT IN S hat das gleiche Ergebnis wie NOT(x IN S)

Beispieltabelle customer

Auswahl aller Kunden, die natürliche Personen (keine Firmen) sind:

SELECT title, firstname, name, city FROM customer
WHERE title IN ('Mr','Mrs')

TITLE

FIRSTNAME

NAME

CITY

Mrs

Jenny

Porter

New York

Mr

Martin

Porter

Los Angeles

Mrs

Sally

Peters

Los Angeles

Mr

Peter

Brown

Hollywood

Mr

Michael

Porter

New York

Mr

George

Howe

New York

Mr

Frank

Randolph

Los Angeles

Mr

Joseph

Peters

Los Angeles

Mrs

Susan

Brown

Los Angeles

Mr

Anthony

Jackson

Los Angeles

Mr

Thomas

Adams

Los Angeles

Mr

Mark

Griffith

New York

Mrs

Rose

Brown

Hollywood

 

Ende des Inhaltsbereichs