9.2. Operadores de comparação

Estão disponíveis os operadores de comparação habituais, conforme mostrado na Tabela 9-1.

Tabela 9-1. Operadores de comparação

Operador Descrição
< menor
> maior
<= menor ou igual
>= maior ou igual
= igual
<> ou != diferente

Nota: O operador != é convertido em <> no estágio de análise. Não é possível implementar os operadores != e <> realizando operações diferentes.

Os operadores de comparação estão disponíveis para todos os tipos de dado onde fazem sentido. Todos os operadores de comparação são operadores binários, que retornam valores do tipo boolean; expressões como 1 < 2 < 3 não são válidas (porque não existe o operador < para comparar um valor booleano com 3).

Além dos operadores de comparação, está disponível a construção especial BETWEEN.

a BETWEEN x AND y

equivale a

a >= x AND a <= y

Analogamente,

a NOT BETWEEN x AND y

equivale a

a < x OR a > y

Não existe diferença entre as duas formas, além dos ciclos de CPU necessários para reescrever a primeira forma na segunda internamente.

Para verificar se um valor é nulo ou não, são usadas as construções

expressão IS NULL
expressão IS NOT NULL

ou às construções equivalentes, mas fora do padrão,

expressão ISNULL
expressão NOTNULL

Não deve ser escrito expressão = NULL, porque NULL não é "igual a" NULL (O valor nulo representa um valor desconhecido, e não se pode saber se dois valores desconhecidos são iguais). Este comportamento está de acordo com o padrão SQL.

Dica: Alguns aplicativos podem (incorretamente) esperar que expressão = NULL retorne verdade se o resultado da expressão for o valor nulo. É altamente recomendado que estes aplicativos sejam modificadas para ficarem em conformidade com o padrão SQL. Entretanto, se isto não puder ser feito, está disponível a variável de configuração transform_null_equals. Quando transform_null_equals está ativado, o PostgreSQL converte as cláusulas x = NULL em x IS NULL. Este foi o comportamento padrão do PostgreSQL nas versões de 6.5 a 7.1.

O resultado dos operadores de comparação comuns é nulo (significando "desconhecido"), quando algum dos operandos é nulo. Outra forma de fazer comparação é com a construção IS DISTINCT FROM:

expressão IS DISTINCT FROM expressão

Para expressões não-nulas é o mesmo que o operador <>. Entretanto, quando as duas expressões são nulas retorna falso, e quando apenas uma expressão é nula retorna verdade. Portanto, atua efetivamente como se nulo fosse um valor de dado normal, em vez de "desconhecido".

Os valores booleanos também podem ser testados utilizando as construções

expressão IS TRUE
expressão IS NOT TRUE
expressão IS FALSE
expressão IS NOT FALSE
expressão IS UNKNOWN
expressão IS NOT UNKNOWN

Estas formas sempre retornam verdade ou falso, e nunca o valor nulo, mesmo quando o operando é nulo. A entrada nula é tratada como o valor lógico "desconhecido". Deve ser observado que IS UNKNOWN e IS NOT UNKNOWN são efetivamente o mesmo que IS NULL e IS NOT NULL, respectivamente, exceto que a expressão de entrada deve ser do tipo booleana.

SourceForge.net Logo CSS válido!