Introducción

Cuando se manejan datos en PostgreSQL, encontrará que los valores NULL pueden ser un poco difíciles de manejar. Por ejemplo, la mayoría de las expresiones devuelven un valor NULL cuando cualquier elemento de la expresión es NULL. ¿Cómo podemos evitar algunas de las dificultades asociadas con los valores NULL? En el primer artículo de esta serie de dos partes, explicamos cómo la función COALESCE de PostgreSQL puede ser usada para probar valores NULL y sustituir otro valor en lugar de los NULL. Este artículo retomará donde lo dejamos y continuará nuestra discusión de la función COALESCE y sus aplicaciones en PostgreSQL.

Requisitos previos

Antes de intentar seguir los ejemplos de este artículo, asegúrese de que PostgreSQL ya está instalado en su máquina. También debe tener algún conocimiento introductorio de PostgreSQL para entender los ejemplos de la función COALESCE.

COALESCE en la interfaz de línea de comandos psql

En el artículo anterior, explicamos cómo acceder a la interfaz de línea de comandos psql para PostgreSQL. Tendremos que entrar en la consola de línea de comandos psql una vez más para probar algunos ejemplos de COALESCE.

Comencemos con el sencillo ejemplo que se muestra a continuación:

1
SELECT COALESCE ( ‘manzana’ , ‘pera’ , ‘fresa’);

La salida de esta consulta será:

1
2
3
COALESCE
———-
manzana

Como puedes ver, la salida devuelta es ‘manzana’ ya que es el primer valor no NULL de la lista de argumentos.

Si tenemos un valor NULL como primer elemento de la lista, la función COALESCE se lo saltará, buscando el primer valor que no sea NULL. Podemos ver cómo funciona esto en la siguiente consulta:

1
SELECT COALESCE ( NULL, ‘manzana’ , ‘pera’ , ‘fresa’);

La salida será:

1
2
3
4
COALESCE
———-
manzana
(1 ROW)

Usa PostgreSQL COALESCE timestamp null

En nuestro siguiente ejemplo, intentaremos utilizar la función COALESCE con el tipo de datos timestamp.

Primero, tendremos que crear otra tabla en PostgreSQL:

1
2
3
4
5
6
7
CREATE TABLE books(
book_id INT PRIMARY KEY NOT NULL,
nombre_libro VARCHAR NOT NULL,
cantidad INT,
precio REAL,
año_lanzamiento TIMESTAMP
);

También tendremos que insertar registros en la tabla booksque acabamos de crear:

1
2
3
4
5
6
7
INSERT INTO books(book_name, quantity, price, year_released)
VALUES
(‘Book1’, 12, 60, ‘2015-07-21 09:10:25+8’),
(‘Libro2’, 5, 55, ‘2018-02-12 15:40:15+8’),
(‘Libro3’, 10, 90, ‘2017-11-12 00:10:11+8’),
(‘Libro4’, 26, 47, NULL),
(‘Libro5’, 2, 83, ‘2019-03-05 03:05:08+8’);

Nota que hemos insertado un valor NULL en nuestra tabla en la columna year_released, que tiene un tipo de datos de timestamp.

Imaginemos que queremos obtener el precio total de cada libro. Para obtener esa información, multiplicaremos los valores de dos columnas: quantity y price. La consulta siguiente muestra cómo se hace:

1
2
SELECT book_id, book_name, ( quantity * price ) AS total_price
FROM books;

La salida de la consulta será como:

1
2
3
4
5
6
7
8
Libro_id | libro_nombre | precio_total
———+———–+————-
1 | Libro1 | 720
2 | Libro2 | 275
3 | Libro3 | 900
4 | Libro4 | 1222
5 | Libro5 | 166
(5 FILAS)

Veamos el contenido de la tabla books con esta consulta:

1
SELECT * FROM libros;

La salida sería así:

1
2
3
4
5
6
7
8
Id del libro | nombre_del_libro | cantidad | precio | año_lanzamiento
———+———–+———-+——-+———————
1 | Libro1 | 12 | 60 | 2015-07-21 09:10:25
2 | Libro2 | 5 | 55 | 2018-02-12 15:40:15
3 | Libro3 | 10 | 90 | 2017-11-12 00:10:11
4 | Libro4 | 26 | 47 |
5 | Libro5 | 2 | 83 | 2019-03-05 03:05:08
(5 filas)
  • Nota que hay un valor NULL en la última columna de la cuarta fila. Podemos cambiar esto para usar un valor no NULL en su lugar usando la función COALESCE:
1
2
SELECT book_id, book_name,
COALESCE(year_released, CURRENT_TIMESTAMP) FROM books;

Así se verá la salida:

1
2
3
4
5
6
7
8
libro_id | libro_nombre | COALESCE
———+———–+——————————-
1 | Libro1 | 2015-07-21 09:10:25-04
2 | Libro2 | 2018-02-12 15:40:15-05
3 | Libro3 | 2017-11-12 00:10:11-05
4 | Libro4 | 2020-02-13 06:20:41.239926-05
5 | Libro5 | 2019-03-05 03:05:08-05
(5 FILAS)

Conclusión

En esta serie de artículos de dos partes, hemos analizado en profundidad la función COALESCE de PostgreSQL. Hemos mostrado varios ejemplos de cómo se puede utilizar esta función para probar los valores NULL en sus datos y sustituir un valor no NULL si es necesario. Usando estos ejemplos como guía, usted estará preparado para incorporar la función COALESCE en sus propias sentencias de PostgreSQL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.