Die standardmäßigen SQL-Vergleichsoperatoren >, <, >=, <=, =, <> werden zum Vergleichen von zwei Werten in ESQL unterstützt.
Wenn die Datentypen der beiden Werte nicht identisch sind, kann einer der beiden Werte implizit in den Typ des anderen Wertes umgesetzt werden, um den Vergleich zu ermöglichen. In der folgenden Tabelle stellt die vertikale Achse den linken Operanden dar und die horizontale Achse den rechten Operanden.
ukn | bln | int | float | dec | char | time | gtm | date | ts | gts | ivl | blob | bit | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ukn | ||||||||||||||
bln | X | L | ||||||||||||
int | X | R | R | L | ||||||||||
float | L | X | L | L | ||||||||||
dec | L | R | X | L | ||||||||||
chr | R | R | R | R | X | R | R | R | R | R | R1 | R | R | |
tm | L | X | L | |||||||||||
gtm | L | R | X | |||||||||||
dt | L | X | R2 | R2 | ||||||||||
ts | L | L2 | X | L | ||||||||||
gts | L | L2 | R | X | ||||||||||
ivl | L1 | X | ||||||||||||
blb | L | X | ||||||||||||
bit | L | X | ||||||||||||
Hinweise:
|
Sie können keine alternative Sortierfolge definieren, die z. B. Groß- und Kleinbuchstaben gleich sortiert.
Bei dem Vergleich von Zeichenfolgen haben abschließende Leerzeichen keine Bedeutung, d. h., der Vergleich 'hello' = 'hello ' gibt 'true' zurück.
Werte für Datum und Uhrzeit werden gemäß den natürlichen Regeln des Gregorianischen Kalenders verglichen.
Sie können die Zeitzone, in der Sie arbeiten, mit der Zeitzone GMT (Greenwich Mean Time = Westeuropäische Zeit) vergleichen. Die Zeitzone GMT wird auf Basis der Differenz zwischen Ihrer Ortszeitzone und der angegebenen GMT-Zeit in eine Ortszeitzone konvertiert. Wenn Sie Ihre Ortszeit mit der GMT-Zeit vergleichen, basiert der Vergleich auf der Differenz zu einer angegebenen Uhrzeit an einem angegebenen Datum.
Die Konvertierung basiert immer auf dem Wert für LOCAL_TIMEZONE. Dies ist darauf zurückzuführen, dass GMT-Zeitmarken nur in Ortszeitmarken konvertiert werden, wenn diese Konvertierung eindeutig durchgeführt werden kann. Die Konvertierung einer Ortszeitmarke in eine GMT-Zeitmarke bereitet in der Zeit, in der auf Sommer- bzw. Winterzeit umgestellt wird, Schwierigkeiten, und die Konvertierung zwischen Uhrzeiten und GMT-Uhrzeiten (ohne Datumsangaben) muss auf dem Wert für LOCAL_TIMEZONE basieren, da Sie ansonsten nicht angegeben können, welche Zeitzonendifferenz verwendet werden soll.
Boolesche Werte können mit Hilfe aller normalen Vergleichsoperatoren verglichen werden. Der Wert TRUE ist per Definition größer als der Wert FALSE. Der Vergleich eines der beiden Werte mit dem Booleschen Wert UNKNOWN (der äquivalent zu NULL ist) gibt das Ergebnis UNKNOWN zurück.
Intervalle werden verglichen, indem die beiden Intervallwerte in Zwischendarstellungen konvertiert werden, so dass beide Intervalle über dasselbe Intervallqualifikationsmerkmal verfügen. Jahr-Monat-Intervalle können nur mit anderen Jahr-Monat-Intervallen und Tag-Sekunde-Intervalle nur mit anderen Tag-Sekunde-Intervallen verglichen werden.
Wenn beispielsweise ein Intervall in Minuten, z. B. INTERVAL '120' MINUTE, mit einem Intervall in Tagen bis Sekunden, z. B. INTERVAL '0 02:01:00', verglichen wird, werden die beiden Intervalle zuerst in Werte konvertiert, die über konsistente Intervallqualifikationsmerkmale verfügen, die verglichen werden können. In diesem Beispiel wird also der erste Wert in ein Intervall in Tagen bis Sekunden konvertiert, was INTERVAL '0 02:00:00' ergibt. Dieser Wert kann dann mit dem zweiten Wert verglichen werden.
Wenn eine Zeichenfolge mit einem Wert eines anderen Typs verglichen wird, versucht WebSphere Message Broker, die Zeichenfolge in einen Wert umzusetzen, dessen Datentyp mit dem Typ des anderen Wertes identisch ist.
'1234' > 4567
Body.Trade.Quantity > 5000
In diesem Beispiel ergibt der Feldverweis auf der linken Seite die Zeichenfolge '1000', und da dieser Wert mit einer Ganzzahl verglichen wird, wird diese Zeichenfolge in eine Ganzzahl konvertiert, bevor der Vergleich stattfindet.
Sie müssen trotzdem überprüfen, ob das Feld 'Price', das als Dezimalzahl interpretiert werden soll, den angegebenen Grenzwert überschreitet. Stellen Sie sicher, dass das Literal, mit dem der Wert verglichen werden soll, ein Dezimalwert und keine Ganzzahl ist.
Body.Trade.Price > 100
Body.Trade.Price > 100.00