ESQL da soporte a varios operadores para tareas de comparación complejas.
Si desea utilizar ESQL para realizar una comparación simple, consulte Operadores simples de comparación ESQL.
Operador BETWEEN .-ASYMMETRIC-. >>-expresión--+-----+--BETWEEN--+------------+------------------> '-NOT-' '-SYMMETRIC--' >--puntoFinal_1--AND--puntoFinal_2-----------------------------><
Este operador tiene dos formatos, SYMMETRIC y ASYMMETRIC (que es el valor predeterminado, 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. Es útil sólo cuando las expresiones de condición límite son literales.
Si los operandos son de tipos diferentes, se aplican normas especiales. Estas normas se describen en Transformaciones CAST implícitas.
El operador EXISTS devuelve un valor booleano que indica si una función SELECT ha devuelto uno o más valores (TRUE) o ninguno (FALSE).Operador EXISTS >>-Operando--(--ExpresiónLista--)------------------------------><
EXISTS(SELECT * FROM something WHERE predicate)
Operador IN .-,----------. V | >>-operando_1--+-----+--IN--(----operando_2-+--)--------------->< '-NOT-'
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 uno o más de los operandos de la derecha, ninguno de los cuales tiene un valor 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 valor operand_1 se debe evaluar en un valor escalar. El valor operand_2 puede ser una secuencia de expresiones que devuelve valores escalares de tipos comparables con operand_1 o puede ser una expresión única que devuelve un valor LIST. Si el valor LIST es un valor que se devuelve de una función SELECT, solamente podrá haber una columna en SelectClause y cada ROW de esa columna se comparará con operand_1 en cuanto a su igualdad.
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[]);
Operador IS .-TRUE-------. >>-Operando --IS--+-----+--+-FALSE------+---------------------->< '-NOT-' +-INF--------+ +-+INF-------+ +- -INF------+ +-INFINITY---+ +-+INFINITY--+ +- -INFINITY-+ +-NAN--------+ +-NULL-------+ +-NUM--------+ +-NUMBER-----+ '-UNKNOWN----'
El propósito principal del operador IS es probar si un valor es NULL. No puede utilizar el operador de comparación (=) para comprobar un valor NULL porque el resultado de comparar cualquier valor con NULL es NULL.
También puede utilizar el operando IS para probar los valores booleanos TRUE y FALSE, y para probar los valores decimales para valores especiales. Estos valores se indican mediante INF, +INF, -INF, NAN (no un número) y NUM (un número válido) en mayúsculas, minúsculas o una 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.
Operador LIKE >>-origen--+-----+--LIKE--patrón--+-------------------+-------->< '-NOT-' '-ESCAPE--CarEscape-'
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 podría especificar el ejemplo anterior de este modo:
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'
El operador SINGULAR devuelve el valor booleano TRUE si la lista tiene exactamente un elemento; de lo contrario, devuelve FALSE.Operador SINGULAR >>-Operando--(--ExpresiónLista--)------------------------------><