Saltar al contenido principal
InicioTutorialesSQL

Función SQL COALESCE

COALESCE() es una de las funciones más útiles de SQL. Lee este tutorial para aprender a dominarlo.
3 may 2024  · 4 min leer

¿Qué es el COALESCE() ¿función?

Coalesce devuelve el primer valor no nulo de una lista. Si todos los valores de la lista son NULL, la función devuelve null. 

Cuándo utilizar COALESCE()?

Esta función es útil cuando se combinan 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.

Usando la función COALESCE(), podemos crear una columna llamada email, que muestra 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

COALESCE() syntax

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

La función COALESCE() toma al menos un valor (value_1). Devolverá el primer valor de la lista que no sea nulo. 

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() ejemplos

Ejemplo 1: COALESCE() una columna con una constante

Considere la tabla countries con una lista de países y sus días nacionales. Algunos días nacionales están vacíos. Para las filas con días nacionales vacíos, podemos rellenarla con el valor 'Unknown'

La consulta y el resultado son los siguientes. 

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

country_id

name

national_day

national_day_coalesced

1

Aruba

null

Desconocido

2

Afghanistan

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

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

Ejemplo 2: COALESCE() 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 consulta y el resultado son los siguientes.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products
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"

Observe cómo la columna product_name_or_description muestra el product_name si el description es largo. En caso contrario, muestra la dirección description.

 Ejemplo 3: COALESCE() tres columnas o más

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, visualice description.
  • En caso contrario, comprueba si la longitud de product_name es inferior a 20. Si es así, mostramos el product_name
  • En caso 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

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,Memory:16GBCore Clock:1.5GHz

producto

AMD 100-505989

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Observe cómo la columna product_name_or_description muestra el product_name o el description en función de las longitudes de los product_name o description.

Requisitos técnicos

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

Ver también

Más información sobre SQL

Temas

Cursos populares de SQL

Course

Introduction to SQL

2 hr
799.6K
Learn how to create and query relational databases using SQL in just two hours.
See DetailsRight Arrow
Start Course
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

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

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

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

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

21 min

tutorial

Cómo utilizar GROUP BY y HAVING en SQL

Una guía intuitiva para descubrir los dos comandos SQL más populares para agregar filas de tu conjunto de datos
Eugenia Anello's photo

Eugenia Anello

6 min

See MoreSee More