Este tópico descreve operadores de comparação complexa do ESQL (predicados). Para obter informações sobre operadores de comparação simples do ESQL, consulte Operadores de Comparação Simples do ESQL.
Este operador existe em dois formatos, SYMMETRIC e ASYMMETRIC (que é o padrão se nenhum for especificado). O formato SYMMETRIC é equivalente a:
(source >= boundary1 AND source <= boundary2) OR (source >= boundary2 AND source <= boundary1)
O formato ASYMMETRIC é equivalente a:
source >= boundary1 AND source <= boundary2
O formato ASYMMETRIC é mais simples, mas retorna apenas o resultado esperado quando o primeiro valor de limite tiver um valor menor do que o segundo valor de limite. Ele é útil apenas quando as expressões de condição de limite são literais.
Se os operandos possuem tipos diferentes, as regras especiais se aplicam. Eles são descritos na seção Casts Implícitos.
EXISTS(SELECT * FROM alguma coisa WHERE predicado)
O resultado será TRUE se o operando esquerdo não for NULL e for igual a um dos operados direitos. O resultado será FALSE se o operando esquerdo não for NULL e não for igual a nenhum dos operadores direitos, nenhum dos quais possui valores NULL. De outra maneira, o resultado será UNKNOWN. Se os operandos possuem tipos diferentes, as regras especiais se aplicam. Eles são descritos na seção Casts Implícitos.
A principal finalidade do operador IS é testar se um valor é NULL. O operador de comparação (=) não permite isso porque o resultado da comparação de algo com NULL é NULL.
O IS também permite testar os valores Booleanos TRUE e FALSE e testar valores decimais para valores especiais. Eles são indicados por INF, +INF, -INF, NAN (não um número) e NUM (um número válido) em qualquer mistura de maiúsculas e minúsculas. As formas alternativas +INFINITY, -INFINITY e NUMBER também são aceitas.
Se aplicado em tipos não-numéricos, o resultado será FALSE.
O resultado será TRUE se nenhum dos operandos for NULL e o operando source corresponder ao operando do padrão. O resultado será FALSE se nenhum dos operandos for NULL e o operando source não corresponder ao operando do padrão. De outra maneira, o resultado será UNKNOWN.
O padrão é especificado por uma cadeia na qual os caracteres porcentagem (%) e sublinhado (_) podem ser utilizados para ter significado especial:
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
Para utilizar os caracteres porcentagem e sublinhado nas expressões que devem ser correspondidas, preceda-os com um caractere ESCAPE, que assume como padrão o caractere barra invertida (\).
Por exemplo, o predicado a seguir localiza uma correspondência para IBM_Corp.
Body.Trade.Company LIKE 'IBM\_Corp'
Você pode especificar um caractere de escape diferente, utilizando a cláusula ESCAPE. Por exemplo, você também pode especificar o exemplo anterior da seguinte forma:
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'