## Mengenvergleichsprädikat (quantified_predicate)

Durch die Angabe eines Mengenvergleichsprädikats (quantified_predicate) wird ein Vergleich eines Wertes bzw. einer Werteliste mit einer Menge von Werten bzw. Wertelisten durchgeführt.

### Syntax

<quantified_predicate> ::=
<expression> <comp_op> <quantifier> <expression_list>
| <expression> <comp_op> <quantifier> <subquery>
| <expression_list> <equal_or_not> <quantifier> (<expression_list>,...)
| <expression_list> <equal_or_not> <quantifier> <subquery>

Für den Vergleich von Werten stehen folgende Vergleichsoperatoren zur Verfügung:
<comp_op> ::= < | > | <> | != | = | <= | >=
| ~= | ~< | ~> (für Computer mit ASCII-Code)

Für den Vergleich von Wertelisten stehen nur die folgenden Vergleichsoperatoren zur Verfügung:

<equal_or_not> ::= <> |=
| ~= (für Computer mit ASCII-Code)

Zur Qualifizierung des Mengenvergleichs stehen ALL bzw. SOME oder ANY zur Verfügung.

<quantifier> ::= ALL | SOME | ANY

### Beispiele

SQL-Tutorial, Subquery: Innere Abfragen

### Erläuterung

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

Jede auf der rechten Seite des Vergleichsoperators equal_or_not angegebene Werteliste expression_list muss so viele Werte enthalten, wie in der Werteliste vor dem Vergleichsoperator equal_or_not angegeben sind.

· Sei x das Ergebnis des ersten Wertes expression und S das Ergebnis der Subquery oder der Folge von Werten. S ist eine Menge von Werten s. Der Wert x und die Werte in S müssen miteinander vergleichbar sein.

· Wenn auf der linken Seite der Vergleichsopertors equal_or_not eine Werteliste expression_list angegeben ist, dann sei x die Werteliste, die sich aus den Ergebnissen der Werte x1, x2, ..., xn dieser Werteliste zusammensetzt. S sei das Ergebnis der Subquery, die sich aus einer Menge von Wertelisten s zusammensetzt. oder eine Folge von Wertelisten s. Eine Werteliste s setzt sich aus den Ergebnissen der Werte s1, s2, ..., sn zusammen. Ein Wert xm muss mit allen Werten sm vergleichbar sein.
x=s ist wahr, wenn xm=sm, m=1,...,n
x<>s ist wahr, wenn es mindestens ein m gibt, für das gilt xm<>sm.
x <equal_or_not> s ist undefiniert, wenn es kein m gibt, für das xm <equal_or_not> sm falsch ist und es mindestens ein m gibt, für das xm <equal_or_not> sm undefiniert ist.
Wenn ein xm oder ein ym NULL-Werte sind, oder wenn das Ergebnis der Subquery leer ist, dann ist x <equal_or_not> y undefiniert.

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

x <compare> <quantifier> S, wobei compare ::= comp_op | equal_or_not

| quantifier ::= ALL | quantifier ::= ANY | SOME
S ist leer | Wahr | falsch
x <compare> S ist wahr für mindestens ein s aus S | ------ | wahr
x <compare> S ist wahr für alle s aus S | Wahr | wahr
x <compare> S ist für keinen Wert s aus S falsch und ist wenigstens für einen Wert s undefiniert | undefiniert |
S enthält NULL-Werte und x <compare> S ist wahr für alle anderen s | undefiniert | wahr
x <compare> S ist für wenigstens einen Wert s aus S falsch | Falsch | ------
x <compare> S ist falsch für alle s aus S | Falsch | falsch
x <compare> S ist für keinen Wert aus aus S wahr und für wenigstens einen Wert s undefiniert |  | undefiniert
S enthält NULL-Werte und x <compare> S ist falsch für alle anderen s | falsch | undefiniert

Siehe auch:

Vergleichsprädikat (comparison_predicate)