ESQL unterstützt verschiedene Operatoren für komplexe Vergleiche.
Informationen zu einfachen Vergleichen mit ESQL finden Sie im Abschnitt Einfache ESQL-Vergleichsoperatoren.
BETWEEN-Operator .-ASYMMETRIC-. >>-Ausdruck--+-----+--BETWEEN--+------------+-------------------> '-NOT-' '-SYMMETRIC--' >--Endpunkt_1--AND--Endpunkt_2---------------------------------><
Dieser Operator existiert in zwei Formen: SYMMETRIC (SYMMETRISCH) und ASYMMETRIC (ASYMMETRISCH) (letztere wird standardmäßig verwendet, wenn keine Form angegeben ist). Das Format SYMMETRIC entspricht Folgendem:
(Quelle >= Grenzwert1 AND Quelle <= Grenzwert2) OR
(Quelle >= Grenzwert2 AND Quelle <= Grenzwert1)
Das Format ASYMMETRIC entspricht Folgendem:
Quelle >= Grenzwert1 AND Quelle <= Grenzwert2
Das Format ASYMMETRIC ist einfacher, gibt jedoch nur dann das erwartete Ergebnis zurück, wenn der erste Grenzwert kleiner ist als der zweite Grenzwert. Die Verwendung ist nur dann sinnvoll, wenn es sich bei den Ausdrücken für Grenzwertbedingungen um Literale handelt.
Handelt es sich bei den Operanden um unterschiedliche Typen, gelten Sonderregelungen. Diese Regeln werden im Abschnitt Implizite Umsetzungen beschrieben.
Der Operator EXISTS gibt einen Booleschen Wert zurück, der angibt, ob eine SELECT-Funktion einen oder mehrere Werte (TRUE) oder keinen Wert (FALSE) zurückgegeben hat.EXISTS-Operator >>-Operand--(--Listenausdruck--)-------------------------------><
EXISTS(SELECT * FROM etwas WHERE Prädikat)
IN-Operator .-,---------. V | >>-Operand_1--+-----+--IN--(----Operand_2-+--)----------------->< '-NOT-'
Das Ergebnis ist TRUE, wenn der linke Operand kein NULL-Wert und gleich einem der rechten Operanden ist. Das Ergebnis ist FALSE, wenn der linke Operand kein NULL-Wert ist und keinem der rechten Operanden entspricht (von denen keiner ein NULL-Wert ist). Andernfalls wird als Ergebnis UNKNOWN zurückgegeben. Handelt es sich bei den Operanden um unterschiedliche Typen, gelten Sonderregelungen. Diese Regeln werden im Abschnitt Implizite Umsetzungen beschrieben.
Operand_1 muss einen skalaren Wert ergeben. Operand_2 kann eine Folge von Ausdrücken sein, die skalare Wertetyps zurückgeben, die mit Operand_1 kompatibel sind, oder er kann ein einzelner Ausdruck sein, der eine Liste (LIST) zurückgibt. Handelt es sich um eine Liste, die von einer SELECT-Funktion zurückgegeben wird, kann die SELECT-Klausel nur ein einzige Spalte enthalten und jede Zeile (ROW) in dieser Spalte wird auf Übereinstimmung mit Operand_1 verglichen.
SET OutputRoot.XMLNSC.Top.Result1 = 30 NOT IN(34, 42, 45)
SET OutputRoot.XMLNSC.Top.Result2 = var1 IN(var2, var3, var4);
SET OutputRoot.XMLNSC.Top.Result3 = 42 IN(
SELECT A FROM InputRoot.XMLNSC.Top.a[] AS A);
SET OutputRoot.XMLNSC.Top.Result4 = 42 IN(
LIST{34,36,37,38,39,40,41,42,43,44});
SET OutputRoot.XMLNSC.Top.Result5 = var1 IN(
InputRoot.XMLNSC.Top.test[]);
IS-Operator .-TRUE-------. >>-Operand --IS--+-----+--+-FALSE------+----------------------->< '-NOT-' +-INF--------+ +-+INF-------+ +- -INF------+ +-INFINITY---+ +-+INFINITY--+ +- -INFINITY-+ +-NAN--------+ +-NULL-------+ +-NUM--------+ +-NUMBER-----+ '-UNKNOWN----'
Mit dem Operator IS soll primär festgestellt werden, ob ein Wert gleich NULL ist. Mit dem Vergleichsoperator (=) ist diese Überprüfung nicht möglich, da ein Vergleich eines beliebigen Werts mit NULL immer NULL ergibt.
Darüber hinaus können Sie mit dem Operator IS auch feststellen, ob ein Wert TRUE oder FALSE ist, und Dezimalwerte auf bestimmte Werte überprüfen. Diese Werte werden in Großbuchstaben, Kleinbuchstaben oder gemischter Schreibweise mit INF, +INF, -INF, NAN (keine Zahl) und NUM (eine gültige Zahl) angegeben. Die alternative Formate +INFINITY, -INFINITY und NUMBER werden auch akzeptiert.
Wenn der Operator für nicht numerische Typen verwendet wird, wird das Ergebnis 'FALSE' zurückgegeben.
LIKE-Operator >>-Quelle--+-----+--LIKE--Muster--+-----------------------+---->< '-NOT-' '-ESCAPE--Escapezeichen-'
Das Ergebnis ist TRUE, wenn keiner der Operanden NULL ist und der Operand Quelle mit dem Operanden 'Muster' übereinstimmt. Das Ergebnis ist FALSE, wenn keiner der Operanden NULL ist und der Operand Quelle nicht mit dem Operanden 'Muster' übereinstimmt. Andernfalls wird als Ergebnis UNKNOWN zurückgegeben.
Das Muster wird durch eine Zeichenfolge angegeben, wobei das Prozentzeichen (%) und das Unterstreichungszeichen (_) als Sonderzeichen verwendet werden können:
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
Sollen das Prozent- und das Unterstreichungszeichen in Ausdrücken, nach denen gesucht wird, verwendet werden, muss diesen Sonderzeichen ein Escapezeichen vorangestellt werden, für das in der Regel der umgekehrte Schrägstrich (\) verwendet wird (Standardeinstellung).
Mit dem folgenden Prädikat beispielsweise wird eine Übereinstimmung mit IBM_Corp zurückgegeben.
Body.Trade.Company LIKE 'IBM\_Corp'
Sie können auch ein anderes Escapezeichen angeben, indem Sie die Escape-Klausel verwenden. Beispielsweise kann das vorherige Beispiel auch wie folgt angegeben werden:
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'
Der Operator SINGULAR gibt den Booleschen Wert TRUE (wahr) zurück, wenn die Liste genau ein Element enthält, andernfalls gibt er FALSE (falsch) zurück.SINGULAR-Operator >>-Operand--(--Listenausdruck--)-------------------------------><