Saltar al contenido principal

Cómo utilizar la función COALESCE() en SQL (con ejemplos)

Aprende a utilizar la función COALESCE() de SQL para tratar valores nulos, combinar columnas y limpiar tus datos con ejemplos y consejos reales.
Actualizado 28 mar 2025  · 5 min de lectura

Cuando se trabaja con datos del mundo real, los valores perdidos son casi inevitables. Tanto si quieres limpiar conjuntos de datos como combinar columnas, SQL te ofrece una solución sencilla pero potente: la función COALESCE(). Este tutorial te mostrará cómo funciona COALESCE(), cuándo utilizarlo y cómo aplicarlo mediante ejemplos prácticos, todo ello en unas pocas líneas de SQL.

¿Qué es COALESCE() en SQL?

La función COALESCE() de SQL devuelve el primer valor no nulo de una lista de expresiones. Si todos los valores son nulos, devuelve null. Se suele utilizar para tratar valores omitidos o combinar varias columnas en una salida de reserva.

¿Cuándo debes utilizar COALESCE()?

Esta función es útil para combinar los valores de varias columnas en una sola.

Por ejemplo, una tabla llamada usuarios contiene los valores de los usuarios work_email y personal_email.

Utilizando la función COALESCE(), podemos crear una columna llamada email, que muestre el work_email del usuario si no es nulo. De lo contrario, muestra personal_email.

user_id

work_email

personal_email

COALESCE() de

work_email y

personal_email

1

angel@datacamp.com

null

angel@datacamp.com

2

null

bruce@gmail.com

bruce@gmail.com

3

cath@datacamp.com

cath@gmail.com

cath@datacamp.com

Sintaxis de COALESCE()

COALESCE(value_1, value_2, ...., value_n)

La función COALESCE() toma al menos un valor (value_1). Devolverá el primer valor no nulo de la lista, de izquierda a derecha.

Por ejemplo, primero comprobará si value_1 es nulo. Si no, devuelve value_1. En caso contrario, comprueba si value_2 es nulo. El proceso continúa hasta completar la lista. 

COALESCE() puede utilizarse con columnas, expresiones o constantes.

Ejemplos prácticos de COALESCE()

Ejecute y edite el código de este tutorial en línea

Ejecutar código

Ejemplo 1: Sustituir null por una constante

Considera la tabla countries con una lista de países y sus fiestas nacionales. Algunos valores del día nacional son nulos. COALESCE() rellena los valores que faltan en national_day con la cadena constante 'Unknown'.

SELECT
   country_id,
   name, 
   national_day,
   COALESCE(national_day, 'Unknown') AS national_day_coalesced
FROM countries
ORDER BY country_id

Los resultados son los siguientes:

country_id

name

national_day

national_day_coalesced

1

Aruba

null

Desconocido

2

Afganistán

1919-08-19T00:00:00.000Z

1919-08-19

3

Angola

1975-11-11T00:00:00.000Z

1975-11-11

4

Anguilla

1967-05-30T00:00:00.000Z

1967-05-30

Observa cómo el valor null de national_day se sustituye por una constante Unknown

Ejemplo 2: Elegir entre dos columnas

Tenemos una tabla llamada products. Contiene el nombre del producto y su descripción. Algunas descripciones son demasiado largas (más de 60 caracteres). En ese caso, sustituimos la descripción por el nombre del producto.

La siguiente consulta utiliza CASE para convertir las descripciones largas a NULL, y luego utiliza COALESCE() para volver al nombre del producto.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products

Los resultados son los siguientes:

product_name

description

product_name_or_description

G.Skill Ripjaws Serie V

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:14Module:4x16GBSize:64GB"

G.Skill Ripjaws Serie V

G.Skill Ripjaws Serie V

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:15Module:4x16GBSize:64GB"

G.Skill Ripjaws Serie V

Asus X99-E-10G WS

"CPU:LGA2011-3,Factor de forma:SSI CEB,Ranuras RAM:8,RAM máx:128GB"

"CPU:LGA2011-3,Factor de forma:SSI CEB,Ranuras RAM:8,RAM máx:128GB"

Supermicro X9SRH-7TF

"CPU:LGA2011,Factor de forma:ATX,Ranuras RAM:8,RAM máx:64GB"

"CPU:LGA2011,Factor de forma:ATX,Ranuras RAM:8,RAM máx:64GB"

Observa cómo la columna product_name_or_description muestra el product_name si el description es largo. De lo contrario, muestra la dirección description.

Ejemplo 3: Lógica de retroceso con varias columnas

Podemos llevar el ejemplo 2 un paso más allá. Supongamos que actualmente existen dos requisitos:

  • Si la longitud de description es inferior a 60, muestra description.
  • En caso contrario, comprueba si la longitud de product_name es inferior a 20. Si lo es, mostramos la dirección product_name.
  • De lo contrario, muestra product.
SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE 
         WHEN LENGTH(description) > 50
         THEN NULL
         ELSE description
      END,
   CASE 
      WHEN LENGTH(product_name) > 14
      THEN NULL
      ELSE product_name
   END,
'product') AS product_name_or_description
FROM products
ORDER BY product_name

Los resultados son los siguientes:

product_name

description

product_name_or_description

ADATA ASU800SS-128GT-C

Serie:Ultimate SU800,Tipo:SSD,Capacidad:128GB,Caché:N/A

producto

ADATA ASU800SS-512GT-C

Serie:Ultimate SU800,Tipo:SSD,Capacidad:512GB,Caché:N/A

producto

AMD 100-5056062

Chipset:Vega Frontier Edition Liquid,Memoria:16GBCore Clock:1,5GHz

producto

AMD 100-505989

Chipset:FirePro W9100,Memoria:32GBReloj del núcleo:930MHz

Chipset:FirePro W9100,Memoria:32GBReloj del núcleo:930MHz

Observa cómo la columna product_name_or_description muestra el product_name o el description dependiendo de las longitudes de los product_name o description.

Motores SQL compatibles

COALESCE() funciona en SQL Server (a partir de 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse, BigQuery y Amazon RedShift.

Funciones SQL relacionadas

Reflexiones finales

La función COALESCE() es una herramienta versátil para manejar valores nulos y simplificar tus consultas SQL. Tanto si sustituyes los datos que faltan por valores por defecto como si combinas varias columnas en una, COALESCE() te ayuda a mantener tu lógica limpia y legible.

¿Listo para profundizar en tus conocimientos de SQL? Echa un vistazo a estos cursos para principiantes y para impulsar tu carrera en DataCamp:

Preguntas frecuentes

¿Qué ocurre si todos los valores de COALESCE() son NULL?

Si cada argumento pasado a la función COALESCE() es NULL, la función devolverá NULL.

¿En qué se diferencia COALESCE() de ISNULL() o IFNULL()?

  • ISNULL() (SQL Server) y IFNULL() (MySQL, SQLite) sólo aceptan dos argumentos.
  • COALESCE() puede aceptar varios argumentos y es más estándar en todos los dialectos de SQL.

  • COALESCE() forma parte de la norma ANSI SQL, mientras que ISNULL() y IFNULL() son específicos de cada base de datos.

¿Puedo utilizar COALESCE() con expresiones o funciones?

Sí, puedes utilizar nombres de columnas, literales, funciones o expresiones dentro de COALESCE().

COALESCE(LOWER(name), 'unknown')

¿Tiene algún coste de rendimiento utilizar COALESCE()?

En general, noCOALESCE() es eficaz. Sin embargo, si la utilizas con expresiones complejas o dentro de consultas grandes, la base de datos puede evaluar más expresiones de las necesarias, dependiendo de cómo esté escrita.

¿Funciona COALESCE() con distintos tipos de datos?

Sí, pero todos los argumentos deben ser convertibles implícitamente a un tipo de datos común. De lo contrario, puede devolver un error de conversión de tipo dependiendo de tu motor SQL.

¿Puedo anidar funciones COALESCE()?

Sí. Puedes anidarlos, aunque rara vez es necesario porque COALESCE() ya maneja múltiples argumentos:

COALESCE(col1, COALESCE(col2, 'default'))

Esto equivale a

COALESCE(col1, col2, 'default')
Temas

Cursos populares de SQL

Curso

Introduction to SQL

2 hr
1.2M
Learn how to create and query relational databases using SQL in just two hours.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

FUNCIÓN SQL FORMAT()

FORMAT() es una de las funciones más utilizadas en SQL. Conozca sus principales aplicaciones en este tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

Comprender la función DECODE() de SQL

Aprende a utilizar DECODE() en Oracle para la lógica condicional en la transformación de datos. Compara DECODE() con la sentencia CASE WHEN en cuanto a rendimiento y comportamiento.
Allan Ouko's photo

Allan Ouko

11 min

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

9 min

Tutorial

FUNCIÓN SQL COUNT()

COUNT() te permite contar el número de filas que cumplen determinadas condiciones. Aprende a utilizarlo en este tutorial.
Travis Tang 's photo

Travis Tang

3 min

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

3 min

Ver másVer más