O PostgreSQL disponibiliza o tipo SQL padrão boolean. O tipo boolean pode possuir apenas um dos dois estados: "verdade" ou "falso". O terceiro estado, "desconhecido", é representado pelo valor nulo do SQL. [1] [2]
Os valores literais válidos para o estado "verdade" são:
TRUE |
't' |
'true' |
'y' |
'yes' |
'1' |
FALSE |
'f' |
'false' |
'n' |
'no' |
'0' |
Exemplo 8-7. Utilização do tipo boolean
CREATE TABLE teste1 (a boolean, b text); INSERT INTO teste1 VALUES (TRUE, 'sic est'); INSERT INTO teste1 VALUES (FALSE, 'non est'); SELECT * FROM teste1; a | b ---+--------- t | sic est f | non est SELECT * FROM teste1 WHERE a; a | b ---+--------- t | sic est
O Exemplo 8-7 mostra que os valores do tipo boolean são exibidos utilizando as letras t e f.
Dica: Os valores do tipo boolean não podem ser convertidos diretamente em outros tipos (por exemplo, CAST (valor_booleano AS integer) não funciona). A conversão pode ser feita utilizando a expressão CASE: CASE WHEN valor_booleano THEN 'valor se for verdade' ELSE 'valor se for falso' END. Consulte a Seção 9.13.
O tipo boolean utiliza 1 byte para seu armazenamento.
Exemplo 8-8. Classificação do tipo boolean
Segundo o padrão SQL o valor verdade é maior que o valor falso. O PostgreSQL considera o valor nulo maior que estes dois, conforme mostrado neste exemplo. [3]
\pset null - BEGIN; CREATE TEMPORARY TABLE t (b BOOLEAN) ON COMMIT DROP; INSERT INTO t VALUES(true); INSERT INTO t VALUES(false); INSERT INTO t VALUES(null); SELECT * FROM t ORDER BY b; COMMIT; b --- f t - (3 linhas)
[1] |
Os sistemas gerenciadores de banco de dados SQL Server 2000, Oracle 10g e DB2 8.1 não implementam o tipo de dado boolean. (N. do T.) |
[2] |
O tipo de dado booleano contém os valores verdade distintos Verdade e Falso. A menos que seja proibido pela restrição NOT NULL, o tipo de dado booleano também suporta o valor verdade Desconhecido. Esta especificação não faz distinção entre o valor nulo do tipo de dado booleano e o valor verdade "Desconhecido" resultado de um predicado, condição de procura ou expressão de valor booleana do SQL; podem ser trocados um pelo outro significando exatamente a mesma coisa. (ISO-ANSI Working Draft) Foundation (SQL/Foundation), August 2003, ISO/IEC JTC 1/SC 32, 25-jul-2003, ISO/IEC 9075-2:2003 (E) (N. do T.) |
[3] |
Exemplo escrito pelo tradutor, não fazendo parte do manual original. |