Operadores de Comparação ESQL

O ESQL fornece os seguintes operadores de comparação (predicados):

Operador >
O resultado será TRUE se o valor do primeiro operando for maior que o do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir).
Operador <
O resultado será TRUE se o valor do primeiro operando for menor que o do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir).
Operador >=
O resultado será TRUE se o valor do primeiro operando for maior que ou igual ao do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir).
Operador <=
O resultado será TRUE se o valor do primeiro operando for menor que ou igual ao do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir).
Operador =
O resultado será TRUE se o valor do primeiro operando for igual ao do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir). Este operador pode comparar escalares, linhas e listas. ConsulteComparações de ROW e LIST para obter uma descrição da lista e comparação de linhas.
Operador <>
O resultado será TRUE se o valor do primeiro operando não for igual ao do segundo. De outra maneira, o resultado será FALSE (mas consulte as notas sobre valores NULL na lista a seguir). Este operador pode comparar escalares, linhas e listas. ConsulteComparações de ROW e LIST para obter uma descrição da lista e comparação de linhas.
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 (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.

Em todos os casos acima, se qualquer um dos operandos for NULL, 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 IN
O operador IN permite testar se um valor é igual a um dos valores da lista de valores.
Ler diagrama de sintaxeManter visual do diagrama de sintaxe
Operador IN

                              .-,---------.
                              V           |
>>-operand_1--+-----+--IN--(----operand_2-+--)-----------------><
              '-NOT-'

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 LIKE
O operador LIKE pesquisa cadeias que correspondem a um determinado padrão.

O resultado será TRUE caso nenhum dos operandos seja NULL e o operando de origem (operand_1) corresponda ao operando do padrão. O resultado será FALSE se nenhum dos operandos for NULL e o operando de origem não corresponder ao operando 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 IS
O operador IS permite testar se um valor é NULL.

Isso inclui os valores de teste INF, +INF, -INF, NAN (sem ser um número) e NUM em qualquer combinação 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 operador de comparação (=) não permite isso, porque o resultado da comparação com NULL é NULL. Ele também permite utilizar uma sintaxe em inglês mais natural ao testar valores boolean.

O resultado será TRUE se o valor do operando esquerdo for igual (ou diferente se a cláusula NOT estiver presente) ao valor especificado (TRUE, FALSE, UNKNOWN ou NULL). De outra maneira, o resultado será FALSE.

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)

Conceitos relacionados
Fluxos de Mensagem
Mapeamentos

Tarefas relacionadas
Desenvolvendo Aplicativos do Fluxo de Mensagens
Desenvolvendo ESQL

Referências relacionadas
Nós Internos
ESQL
Comparações de ROW e LIST
Casts Implícitos