En este tema se describen los operadores complejos de comparación (predicados) de ESQL. Para obtener información sobre los operadores simples de comparación ESQL, consulte Operadores simples de comparación ESQL.
Este operador tiene dos formatos, SYMMETRIC y ASYMMETRIC (que es el valor por omisión, si no especifica ninguno). El formato SYMMETRIC es equivalente a:
(origen >= límite1 AND origen <= límite2) OR (origen >= límite2 AND origen <= límite1)
El formato ASYMMETRIC es equivalente a:
origen >= límite1 AND origen <= límite2
El formato ASYMMETRIC es más sencillo pero sólo devuelve el resultado que espera cuando el primer valor de límite tiene un valor menor que el segundo límite. Sólo resulta útil cuando las expresiones de condiciones de límite son literales.
Si los operandos son de tipos diferentes, se aplican normas especiales. Estas normas se describen en Transformaciones CAST implícitas.
EXISTS(SELECT * FROM something WHERE predicate)
El resultado es TRUE si el operando de la izquierda no es NULL y es igual a uno de los operandos de la derecha. El resultado es FALSE si el operando de la izquierda no es NULL y no es igual a ninguno de los operandos de la derecha, de los cuales ninguno es NULL. De lo contrario, el resultado es UNKNOWN. Si los operandos son de tipos diferentes, se aplican normas especiales. Estas normas se describen en Transformaciones CAST implícitas.
El propósito principal del operador IS es comprobar si un valor es NULL. El operador de comparación (=) no lo permite porque el resultado de comparar algo con NULL es NULL.
IS también le permite probar los valores booleanos TRUE y FALSE, y probar los valores decimales para valores especiales. Estos se indican mediante INF, +INF, -INF, NAN (no un número) y NUM (un número válido) en cualquier combinación de mayúsculas y minúsculas. También se aceptan los formatos alternativos +INFINITY, -INFINITY y NUMBER.
si se aplican a tipos no numéricos, el resultado es FALSE.
El resultado es TRUE si ninguno de los operandos es NULL y el operando origen coincide con el operando de patrón. El resultado es FALSE si ninguno de los operandos es NULL y el operando origen no coincide con el operando de patrón. De lo contrario, el resultado es UNKNOWN.
El patrón se especifica mediante una serie de caracteres en las que los caracteres de porcentaje (%) y de subrayado (_) tienen un significado especial:
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
Para utilizar los caracteres de porcentaje y subrayado contenidos en expresiones que puedan coincidir, añada el carácter de ESCAPE como prefijo a los caracteres, el cual por omisión es la barra invertida (\).
Por ejemplo, el predicado siguiente busca una coincidencia para IBM_Corp.
Body.Trade.Company LIKE 'IBM\_Corp'
Puede especificar un carácter de escape diferente utilizando la cláusula ESCAPE. Por ejemplo, también puede especificar el ejemplo anterior de este modo:
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'