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.