Operadores de Comparação Complexa do ESQL

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.

Operador BETWEEN
O operador BETWEEN permite testar se um valor está entre DOIS VALORES DE LIMITE.

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.

Operador EXISTS
O operador EXISTS retorna um valor booleano indicando se uma função SELECT retornou um ou mais valores (TRUE) ou nenhum (FALSE).
EXISTS(SELECT * FROM alguma coisa WHERE predicado)
Operador IN
O operador IN permite testar se um valor é igual a um dos valores DA LISTA DE VALORES.

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.

Operador IS
O operador IS permite testar se uma expressão retornou um VALOR ESPECIAL.

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.

Operador LIKE
O operador LIKE pesquisa cadeias que correspondem a um determinado padrão.

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:

  • O caractere sublinhado _ corresponda a qualquer caractere único.
    Por exemplo, o item a seguir localiza correspondências para IBM e para IGI, mas não para International Business Machines ou IBM Corp:
    Body.Trade.Company LIKE 'I__'
  • O caractere de porcentagem % corresponda a uma cadeia com zero ou mais caracteres.
    Por exemplo, o item a seguir localiza correspondências para IBM, IGI, International Business Machines e IBM Corp:
    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 '$'
Operador SINGULAR
O operador SINGULAR retorna um valor booleano TRUE, se a lista possuir um elemento exatamente; caso contrário, retorna FALSE.
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Visão Geral de Mapeamentos de Mensagens
Tarefas relacionadas
Desenvolvendo Fluxos de Mensagens
Desenvolvendo ESQL
Referências relacionadas
Operadores de Comparação Simples do ESQL
Nós Internos
Referência de ESQL
Comparações de ROW e LIST
Casts Implícitos
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak01045_