Tipo booleano
Use el tipo de dato BOOLEAN para almacenar valores verdaderos y falsos en una columna de un byte. En la siguiente tabla se describen los tres estados posibles para un valor booleano y los valores literales que generan ese estado. Independientemente de la cadena de entrada, una columna booleana almacena y produce "t" para verdadero y "f" para falso.
Estado | Valores literales válidos | Almacenamiento |
---|---|---|
True | TRUE 't' 'true' 'y' 'yes' '1'
|
1 byte |
False | FALSE 'f' 'false' 'n' 'no' '0'
|
1 byte |
Unknown | NULL
|
1 byte |
Puede usar una comparación IS para comprobar un valor booleano solo como un predicado en la cláusula WHERE. No puede usar la comparación IS con un valor booleano en la lista SELECT.
Ejemplos
Podría usar una columna BOOLEAN para almacenar un estado "Activo/Inactivo" para cada cliente en una tabla CUSTOMER.
create table customer(
custid int,
active_flag boolean default true);
insert into customer values(100, default);
select * from customer;
custid | active_flag
-------+--------------
100 | t
Si no se especifica un valor predeterminado (true
o false
) en la instrucción CREATE TABLE, insertar un valor predeterminado significa insertar un valor nulo.
En este ejemplo, la consulta selecciona usuarios de la tabla USERS que les gustan los deportes, pero no el cine:
select firstname, lastname, likesports, liketheatre
from users
where likesports is true and liketheatre is false
order by userid limit 10;
firstname | lastname | likesports | liketheatre
----------+------------+------------+-------------
Lars | Ratliff | t | f
Mufutau | Watkins | t | f
Scarlett | Mayer | t | f
Shafira | Glenn | t | f
Winifred | Cherry | t | f
Chase | Lamb | t | f
Liberty | Ellison | t | f
Aladdin | Haney | t | f
Tashya | Michael | t | f
Lucian | Montgomery | t | f
(10 rows)
El siguiente ejemplo selecciona usuarios de la tabla USERS para los que se desconoce si les gusta el rock.
select firstname, lastname, likerock
from users
where likerock is unknown
order by userid limit 10;
firstname | lastname | likerock
----------+----------+----------
Rafael | Taylor |
Vladimir | Humphrey |
Barry | Roy |
Tamekah | Juarez |
Mufutau | Watkins |
Naida | Calderon |
Anika | Huff |
Bruce | Beck |
Mallory | Farrell |
Scarlett | Mayer |
(10 rows)
El siguiente ejemplo devuelve un error porque usa una comparación IS en la lista SELECT.
select firstname, lastname, likerock is true as "check"
from users
order by userid limit 10;
[Amazon](500310) Invalid operation: Not implemented
El siguiente ejemplo es correcto porque usa una comparación igual (=) en la lista SELECT en lugar de la comparación IS.
select firstname, lastname, likerock = true as "check"
from users
order by userid limit 10;
firstname | lastname | check
----------+-----------+------
Rafael | Taylor |
Vladimir | Humphrey |
Lars | Ratliff | true
Barry | Roy |
Reagan | Hodge | true
Victor | Hernandez | true
Tamekah | Juarez |
Colton | Roy | false
Mufutau | Watkins |
Naida | Calderon |