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