Se da soporte a los operadores de comparación SQL estándar >, <, >=, <=, =, <> para comparar dos valores en ESQL.
Cuando los tipos de datos de dos valores no son iguales, se debe realizar una transformación CAST implícita del tipo de uno de los valores al otro para que la comparación pueda continuar. En la tabla siguiente, el eje vertical representa al operando de la izquierda, el eje horizontal representa al operando de la derecha.
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 | ||||||||||||
Notas:
|
No puede definir un orden de comparación alternativo que, por ejemplo, compare del mismo modo los caracteres en mayúsculas y en minúsculas.
Cuando se comparan series de caracteres, los espacios blancos de cola no son significativos, por lo tanto, la comparación 'hello' = 'hello ' devuelve true
Los valores de fecha y hora se comparan según las normas naturales del calendario gregoriano y el reloj.
Puede comparar el huso horario con el que está trabajando en el huso horario GMT. El huso horario GMT se convierte al huso horario local basándose en la diferencia entre el huso horario local y la hora GMT especificada. Cuando compara el huso horario local con la hora GMT, la comparación se basa en la diferencia entre una hora determinada de una fecha determinada.
La conversión siempre está basada en el valor de LOCAL_TIMEZONE. Esto es debido a que las indicaciones de la hora GMT se convierten a indicaciones de la hora locales solamente si se puede hacer sin ambigüedades. Convertir una indicación de la hora local a una indicación de la hora GMT presenta dificultades en la relación con las horas del día de ahorro energético y la conversión entre horas y horas GMT (sin información de fecha) se tiene que llevar a cabo en base al valor de LOCAL_TIMEZONE debido a que no puede especificar que diferencia de huso horario utilizar de otro modo.
Los valores booleanos se pueden comparar utilizando todos los operadores de comparación normales El valor TRUE se define de modo que es mayor que el valor de FALSE. Al comparar cualquier valor con el valor booleano UNKNOWN (que es equivalente a NULL) devuelve como resultado UNKNOWN.
Los intervalos se comparan convirtiendo los dos valores de intervalo en representaciones intermedias, por lo tanto, ambos intervalos tienen el mismo calificador de intervalo. Los intervalos de año-mes sólo se pueden comparar con otros intervalos de año-mes y los intervalos de día-segundo sólo se pueden compara con otros intervalos de día-segundo.
Por ejemplo, si se compara un intervalo en minutos como, por ejemplo, INTERVAL '120' MINUTE con un intervalo en días a segundos como, por ejemplo, INTERVAL '0 02:01:00', en primer lugar se convierten los dos intervalos en valores que tienen calificadores de intervalos coherentes que se pueden comparar. Por lo tanto, en este ejemplo, el primer valor se convierte en un intervalo de días a segundos, lo que proporciona INTERVAL '0 02:00:00', que se puede comparar con el segundo valor.
Si se compara una serie de caracteres con un valor de otro tipo, WebSphere Message Broker intenta efectuar la transformación CAST de la serie de caracteres en un valor del mismo tipo de datos que el otro valor.
'1234' > 4567
Body.Trade.Quantity > 5000
En este ejemplo, la referencia de campo de la izquierda se evalúa en la serie de caracteres '1000' y, debido a que se compara en un entero, la serie de caracteres se convierte en un entero antes de que se lleva a cabo la comparación.
Debe continuar comprobando si el campo de precio que desea interpretar como un decimal es mayor que el umbral proporcionado. Asegúrese de que el literal con el que lo compara es un valor decimal y no un entero.
Body.Trade.Price > 100
Body.Trade.Price > 100.00