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 ou 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).
Algumas aplicações podem (incorretamente) esperar que expressão = NULL retorne verdade se o resultado da expressão for o valor nulo. Para aceitar estas aplicações, a opção em tempo de execução transform_null_equals pode ser habilitada (por exemplo, SET transform_null_equals TO ON;). Com isso o PostgreSQL converte a cláusula x = NULL em x IS NULL. Este foi 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 e nunca o valor nulo, mesmo quando o operando é nulo. A entrada nula é tratada como o valor lógico "desconhecido".