--- title: "Boolean Type" id: datatype-boolean pg_version: "20devel" --- ## 8.6. Boolean Type PostgreSQL provides the standard SQL type `boolean`; see [Table 8.19](datatype-boolean.md#datatype-boolean-table). The `boolean` type can have several states: "true", "false", and a third state, "unknown", which is represented by the SQL null value. **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](datatype-boolean.md#datatype-boolean-example). **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](sql-syntax-lexical.md#sql-syntax-constants-generic), 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`.