El tipo de datos BOOLEAN (o su alias BOOL) en PostgreSQL almacena valores de verdad. Ocupa exactamente 1 byte de almacenamiento en el disco. A diferencia de los sistemas binarios tradicionales, implementa una lógica de tres valores compuesta por TRUE, FALSE y NULL (el cual representa un estado desconocido).
Sintaxis admitida para inserción de datos
PostgreSQL es muy flexible y acepta múltiples cadenas de texto para representar estados booleanos (las cuales son insensibles a mayúsculas y minúsculas):
| Valores aceptados para TRUE | Valores aceptados para FALSE |
|---|---|
TRUE, 'true', 't', 'yes', 'y', '1' | FALSE, 'false', 'f', 'no', 'n', '0' |
Nota: Al consultar o exportar datos, PostgreSQL siempre los mostrará internamente de forma compacta como t o f.
Ejemplo práctico de uso
-- 1. Crear una tabla con una columna booleana
CREATE TABLE usuarios (
id SERIAL PRIMARY KEY,
nombre VARCHAR(100),
is_activo BOOLEAN DEFAULT TRUE -- Valor por defecto si no se especifica
);
-- 2. Insertar registros usando diferentes formatos válidos
INSERT INTO usuarios (nombre, is_activo) VALUES ('Ana', TRUE);
INSERT INTO usuarios (nombre, is_activo) VALUES ('Carlos', 'false');
INSERT INTO usuarios (nombre, is_activo) VALUES ('María', 'y');
INSERT INTO usuarios (nombre, is_activo) VALUES ('Juan', '0');
INSERT INTO usuarios (nombre, is_activo) VALUES ('Luis', NULL); -- Estado desconocido
Cómo hacer consultas (WHERE)
Para filtrar registros utilizando una columna booleana, puedes emplear las siguientes estructuras recomendadas:
-- Buscar usuarios activos (evalúa de forma implícita si es TRUE)
SELECT * FROM usuarios WHERE is_activo;
-- Buscar usuarios inactivos (usando el operador lógico NOT)
SELECT * FROM usuarios WHERE NOT is_activo;
-- Manejo estricto de los tres estados (incluyendo el valor NULL)
SELECT * FROM usuarios WHERE is_activo IS TRUE;
SELECT * FROM usuarios WHERE is_activo IS FALSE;
SELECT * FROM usuarios WHERE is_activo IS NULL;
-- Seleccionar todo lo que NO sea verdadero (trae tanto FALSE como NULL)
SELECT * FROM usuarios WHERE is_activo IS NOT TRUE;
Si deseas profundizar en la configuración o optimización de tu base de datos, puedes consultar la Documentación oficial de PostgreSQL sobre tipos booleanos.
0 Comentarios