8.6. Tipo booleano #

PostgreSQL proporciona el tipo estándar de SQL boolean; consulta la Table 8.19. El tipo boolean puede tener varios estados: true (verdadero), false (falso), y un tercer estado, unknown (desconocido), que está representado por el valor nulo de SQL.

Table 8.19. Tipo de datos booleano

NombreTamaño de almacenamientoDescripción
boolean1 byteestado de verdadero (true) o falso (false)

Las constantes booleanas pueden representarse en consultas SQL mediante las palabras clave de SQL TRUE, FALSE y NULL.

La función de entrada del tipo de datos para el tipo boolean acepta estas representaciones de cadena para el estado true:

true
yes
on
1

y estas representaciones para el estado false:

false
no
off
0

También se aceptan prefijos únicos de estas cadenas, por ejemplo t o n. Se ignora el espacio en blanco inicial o final, y no importan las mayúsculas o minúsculas.

La función de salida del tipo de datos para el tipo boolean siempre emite bien t o bien f, como se muestra en la Example 8.2.

Example 8.2. Uso del tipo boolean

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

Las palabras clave TRUE y FALSE son el método preferido (compatible con SQL) para escribir constantes booleanas en consultas SQL. Pero también puedes usar las representaciones en cadena siguiendo la sintaxis genérica de constantes literales de cadena descrita en la Section 4.1.2.7, por ejemplo 'yes'::boolean.

Ten en cuenta que el analizador comprende automáticamente que TRUE y FALSE son de tipo boolean, pero no ocurre lo mismo con NULL porque este puede tener cualquier tipo. Por lo tanto, en algunos contextos es posible que tengas que realizar una conversión explícita de NULL a boolean, por ejemplo NULL::boolean. Por el contrario, la conversión se puede omitir de un valor booleano de literal de cadena en contextos donde el analizador puede deducir que el literal debe ser de tipo boolean.