Prädikate sind die Bestandteile von Suchbedingungen (siehe Abschnitt „Suchbedingung" ).
Ein Prädikat besteht aus Operanden und Operatoren. Entsprechend den Operatoren sind Prädikate in folgende Gruppen unterteilt:
Vergleich von zwei Zeilen
Quantifizierter Vergleich (Vergleich mit den Zeilen einer Tabelle)
BETWEEN-Prädikat (Bereichsabfrage)
CASTABLE-Prädikat (Konvertierbarkeit prüfen)
IN-Prädikat (Elementabfrage)
LIKE-Prädikat (einfacher Mustervergleich)
LIKE_REGEX-Prädikat (Mustervergleich mit regulären Ausdrücken)
NULL-Prädikat (Vergleich auf NULL-Wert)
EXISTS-Prädikat (Existenzabfrage)
Die einzelnen Gruppen sind im Folgenden in der obigen Reihenfolge beschrieben.
Ein Prädikat liefert den Wahrheitswert wahr, falsch oder unbestimmt. Der Wert eines Prädikats wird berechnet, indem die Werte der Operanden berechnet werden und die jeweiligen Operatoren auf die berechneten Werte angewendet werden. In bestimmten Fällen wird ein Operand nicht oder nur teilweise berechnet, falls das zur Bestimmung des Ergebnisses ausreicht.
In der folgenden Übersicht ist die Syntax aller Prädikate in vereinfachter Form zusammengestellt:
praedikat ::=
{
zeile vergleichs_op zeile |
vektor_spalte vergleichs_op ausdruck |
zeile vergleichs_op { ALL | SOME | ANY }
unterabfrage |
zeile [NOT] BETWEEN
zeile AND
zeile |
vektor_spalte [NOT] BETWEEN
ausdruck AND
ausdruck |
ausdruck IS [NOT] CASTABLE AS
datentyp |
zeile [NOT] IN {
unterabfrage | (
zeile ,...) } |
vektor_spalte [NOT] IN (
ausdruck ,
ausdruck ,...) |
operand [NOT] LIKE
muster [ESCAPE
zeichen ...] |
operand [NOT] LIKE_REGEX
regulärer_ausdruck [FLAG
modifikatoren ] |
ausdruck IS [NOT] NULL |
EXISTS
unterabfrage
}
zeile ::= { (
ausdruck ,...) |
ausdruck |
unterabfrage }
vektor_spalte ::= [
tabelle .]{
spalte[min..max] |
spalte (
min..max ) }
vergleichs_op ::= { = | < | > | <= | >= | <> }
operand ::=
ausdruck
muster ::=
ausdruck
zeichen ::=
ausdruck
regulärer_ausdruck ::=
ausdruck
modifikatoren ::=
ausdruck