6.2. Operadores de comparação

Os operadores de comparação habituais estão disponíveis, conforme mostrado na Tabela 6-1.

Tabela 6-1. Operadores de comparação

OperadorDescrição
< menor que
> maior que
<= menor que ou igual a
>= maior que ou igual a
= 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 em 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, a construção especial BETWEEN está disponível.

a BETWEEN x AND y

equivale a

a >= x AND a <= y

Igualmente,

a NOT BETWEEN x AND y

equivale a

a < x OR a > y

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

Para verificar se um valor é ou não nulo devem ser 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 o valor desconhecido, não se podendo saber se dois valores desconhecidos são iguais).

Algumas aplicações podem (incorretamente) requerer que expressão = NULL retorne verdade se a expressão resultar no valor nulo. Para apoiar estas aplicações a opção em tempo de execução transform_null_equals pode ser ativada (por exemplo, SET transform_null_equals TO ON;). Com isso o PostgreSQL converte a cláusula x = NULL em x IS NULL. Este era o comportamento padrão nas versões de 6.5 a 7.1.

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 são semelhantes a IS NULL porque sempre retornam falso ou verdade, nunca o valor nulo, mesmo quando o operando é nulo. A entrada nula é tratada como o valor lógico "desconhecido".