Ticker

6/recent/ticker-posts

Tipo de dato Boolean en PostgreSQL


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 TRUEValores 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.

Referencia:

Publicar un comentario

0 Comentarios