2015-08-25 15:13 GMT-03:00 Danilo Silva <danilo.dsg.go...@gmail.com>:

> WHERE campo_boolean IS TRUE
>
> WHERE campo_boolean = TRUE
>

IS e = tem diferença, mas na cláusula WHERE o efeito vai ser o mesmo.
Explico:

`campo_boolean = TRUE` pode retornar 3 valores:
- TRUE (verdadeiro) caso campo_boolean seja TRUE
- FALSE (falso) caso campo_boolean seja FALSE
- NULL (nulo) caso campo_boolean seja NULL

Enquanto `campo_boolean IS TRUE` pode retornar 2 valores somente:
- TRUE (veradeiro) caso campo_boolean seja TRUE (igual ao = )
- FALSE (false) caso campo_boolean seja FALSE **ou** caso campo_boolean
seja NULL

Resumindo, ambos tratam o NULL de forma diferente, e IS nunca irá retornar
NULL.

Agora, o efeito vai ser o mesmo no WHERE porque quando retorna-se NULL numa
expressão do WHERE é equivalente à ter retornado FALSE. Cuidado, isso não
quer dizer que NULL seja equivalente à FALSE, isso depende do contexto,
numa cláusula CHECK, por exemplo, retornar NULL é equivalente à TRUE, ou
seja, o efeito é ignorar a verificação (ignorar a linha no WHERE, ignora a
checagem do CHECK).

Atenciosamente,
-- 
Matheus de Oliveira
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a