8.6. Tipo de dados booleano #

O PostgreSQL fornece o tipo de dados boolean do padrão SQL; veja a Tabela 8.19. O tipo de dados boolean pode ter vários estados: true, false, e um terceiro estado, desconhecido, representado pelo valor NULL no padrão SQL.

Tabela 8.19. Tipo booleano

NomeTamanho de armazenamentoDescrição
boolean1 byteestado de verdade ou falso

As constantes booleanas podem ser representadas em consultas SQL pelas palavras-chave TRUE, FALSE e NULL do padrão SQL.

A função de entrada para o tipo de dados boolean aceita estes literais como representando o estado true:

true
yes
on
1

e estes representando o estado false :

false
no
off
0

Os prefixos únicos destas cadeias de caracteres também são aceitos, como t ou n. Espaços em branco, à esquerda ou à direita, são ignorados, e não há distinção entre letras minúsculas e maiúsculas.

A função de saída para o tipo de dados boolean sempre retorna t ou f, conforme mostrado no Exemplo 8.10.

Exemplo 8.10. Usando o tipo de dados boolean

CREATE TABLE test1 (a boolean, b text);
INSERT INTO test1 VALUES (TRUE, 'sic est');
INSERT INTO test1 VALUES (FALSE, 'non est');
SELECT * FROM test1;

 a |    b
---+---------
 t | sic est
 f | non est

SELECT * FROM test1 WHERE a;

 a |    b
---+---------
 t | sic est

As palavras-chave TRUE e FALSE são as formas preferidas (em conformidade com o padrão SQL) para serem escritas constantes booleanas nas consultas SQL. Entretanto, também podem ser usadas representações de cadeias de caracteres seguindo a sintaxe genérica descrita na Seção 4.1.2.7 como, por exemplo, 'yes'::boolean.

Note que o analisador entende automaticamente que TRUE e FALSE são do tipo de dados boolean, mas isto não acontece com NULL, que pode ter qualquer tipo de dados. Em alguns contextos pode ser necessário converter NULL para boolean explicitamente como, por exemplo, NULL::boolean. Por outro lado, a conversão de um valor literal booleano pode ser omitida em contextos onde o analisador pode deduzir que o literal deva ser do tipo de dados boolean.

Exemplo 8.11. Exemplo do tradutor

Este exemplo mostra a classificação do tipo de dados boolean. Segundo o padrão SQL o valor verdade é maior que o valor falso, enquanto o PostgreSQL considera o valor nulo maior que estes dois, conforme mostrado no exemplo a seguir:

\pset null -
A exibição de nulos é "-".
BEGIN;
CREATE TEMPORARY TABLE t (b BOOLEAN) ON COMMIT DROP;
INSERT INTO t VALUES (null), (true), (false);
SELECT * FROM t ORDER BY b;
 b
---
 f
 t
 -
(3 linhas)
COMMIT;

ou

WITH t(b) AS (VALUES (NULL::boolean), ('YES'::boolean), ('NO'::boolean))
SELECT * FROM t ORDER BY b;
 b
---
 f
 t
 -
(3 linhas)