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
| Nome | Tamanho de armazenamento | Descrição |
|---|---|---|
boolean | 1 byte | estado 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)