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.
<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
SQL-Tutorial, Subquery: Innere Abfragen
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: