8.6. Boolean Type

PostgreSQL provides the standard SQL type boolean ; see Table 8.19 . The boolean type can have several states: " true " , " false " , and a third state, " unknown " , which is represented by the SQL null value.

Table 8.19. Boolean Data Type

Name Storage Size Description
boolean 1 byte state of true or false

Boolean constants can be represented in SQL queries by the SQL key words TRUE , FALSE , and NULL .

The datatype input function for type boolean accepts these string representations for the " true " state:

true
yes
on
1

and these representations for the " false " state:

false
no
off
0

Unique prefixes of these strings are also accepted, for example t or n . Leading or trailing whitespace is ignored, and case does not matter.

The datatype output function for type boolean always emits either t or f , as shown in Example 8.2 .

Example 8.2. Using the boolean Type

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

The key words TRUE and FALSE are the preferred ( SQL -compliant) method for writing Boolean constants in SQL queries. But you can also use the string representations by following the generic string-literal constant syntax described in Section 4.1.2.7 , for example 'yes'::boolean .

Note that the parser automatically understands that TRUE and FALSE are of type boolean , but this is not so for NULL because that can have any type. So in some contexts you might have to cast NULL to boolean explicitly, for example NULL::boolean . Conversely, the cast can be omitted from a string-literal Boolean value in contexts where the parser can deduce that the literal must be of type boolean .