La función SQL COALESCE() se utiliza para de­te­r­mi­nar el primer valor de una lista que no es NULL. Se trata, por tanto, de una versión abreviada de la in­s­tru­c­ción CASE.

¿Qué es SQL COALESCE()?

En SQL, la palabra NULL hace re­fe­re­n­cia a datos que no tienen valor. Aparece, por ejemplo, cuando no se llena un campo en una tabla porque aún no se conoce un valor de­te­r­mi­na­do, lo cual no significa ne­ce­sa­ria­me­n­te que el campo no tenga un valor. A primera vista, los valores NULL no son pro­ble­má­ti­cos, pero si se acumulan en una base de datos pueden hacerla más difícil de entender. La función SQL COALESCE() se utiliza para devolver el primer valor en una lista que no sea NULL.

Se­r­vi­do­res virtuales (VPS)
VPS rentables en se­r­vi­do­res Dell En­te­r­pri­se
  • 1 Gb/s de ancho de banda y tráfico ilimitado
  • 99,99 % de tiempo de actividad y ce­r­ti­fi­ca­ción ISO
  • Soporte 24/7 ga­la­r­do­na­do y asesor personal

Sintaxis y re­qui­si­tos

La sintaxis de SQL COALESCE() es muy sencilla. Tiene el siguiente aspecto:

COALESCE(valor1, valor2, …, n)
sql

En este caso, necesitas pro­po­r­cio­nar al menos dos ar­gu­me­n­tos. Si todos los ar­gu­me­n­tos pro­po­r­cio­na­dos tienen el valor NULL, el resultado de la función también será NULL.

Un ejemplo para entender cómo funciona

El fu­n­cio­na­mie­n­to es muy sencillo. A co­n­ti­nua­ción, se muestra un código de ejemplo en el que se in­tro­du­cen varios ar­gu­me­n­tos y se co­m­prue­ban con el comando SQL SELECT.

SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
sql

En este caso, el resultado es “17”, pues este es el primer valor que es NULL.

La función combinada con otras

La función es mucho más útil cuando se ejecuta en co­m­bi­na­ción con otras acciones. Imagina una tabla llamada “empleados” que contiene las columnas “Nombre”, “Lugar de re­si­de­n­cia” y “Fecha de na­ci­mie­n­to”. Este sería su aspecto:

Nombre Lugar de re­si­de­n­cia Fecha de na­ci­mie­n­to
Juan Rodríguez Salamanca 10/04/1967
Sara García Salamanca 27/07/1989
Sergio Za­ma­rrie­go Sevilla
Martín Morales Salamanca 14/04/2001
María Santos 02/12/2005

En esta tabla, faltan dos entradas: la de fecha de na­ci­mie­n­to para Sergio Za­ma­rrie­go y la de lugar de re­si­de­n­cia para María Santos. Para co­no­ce­r­las, puedes ayudarte de la función COALESCE() de SQL uti­li­za­n­do este código:

SELECT Nombre,
COALESCE(Lugar de residencia, 'CONSULTAR') AS Lugar de residencia,
COALESCE(Fecha de nacimiento, 'CONSULTAR') AS Fecha de nacimiento
FROM Empleados;
sql

El resultado del mismo sería el siguiente:

Nombre Lugar de re­si­de­n­cia Fecha de na­ci­mie­n­to
Juan Rodríguez Salamanca 10/04/1967
Sara García Salamanca 27/07/1989
Sergio Za­ma­rrie­go Sevilla CONSULTAR
Martín Morales Salamanca 14/04/2001
María Santos CONSULTAR 02/12/2005

Si el valor en “Lugar de re­si­de­n­cia” es NULL, se devuelve ‘CONSULTAR’. Lo mismo se ha realizado para “Fecha de na­ci­mie­n­to”.

Funciones similares a SQL COALESCE()

La función SQL COALESCE() es similar a una in­s­tru­c­ción CASE y es ese­n­cia­l­me­n­te una versión abreviada de la opción de consulta. El código CASE se es­cri­bi­ría así:

CASE
WHEN valor1 IS NOT NULL THEN valor1
WHEN valor2 IS NOT NULL THEN valor2
WHEN … IS NOT NULL THEN …
ELSE n
END
sql

La función ISNULL también es similar a SQL COALESCE(). Sin embargo, ISNULL solo se evalúa una vez y no sigue las reglas de CASE.

Consejo

Con el hosting de SQL Server de IONOS puedes escoger entre MSSQL, MySQL y MariaDB según tus pre­fe­re­n­cias. Además, podrás be­ne­fi­ciar­te de ase­so­ra­mie­n­to pe­r­so­na­li­za­do, sólidas medidas de seguridad y un re­n­di­mie­n­to ex­ce­p­cio­nal.

Ir al menú principal