¡Ayuda al desarrollo del sitio, compartiendo el artículo con amigos!

Introducción a SQL COALESCE

COALESCE es una función de lenguaje de consulta estructurado (SQL) integrada predefinida que se usa para manejar valores NULL en los registros de datos. Evalúa un conjunto o lista de parámetros de entrada de forma secuencial y devuelve los primeros valores no NULL entre ellos. La función COALESCE termina una vez que encuentra el primer valor no NULL y lo devuelve. Si todos los argumentos en la lista de entrada son valores NULL, entonces la función devolverá NULL.

Es una función genérica compatible con todas las bases de datos como MYSQL, SQL Server (a partir de 2008), base de datos Azure SQL, PostgreSQL, Oracle, etc.

Algunos usos de la función SQL COALESCE son:

  • Manejo de valores NULL
  • Ejecutar dos o más consultas como una sola consulta
  • Alternativa abreviada a declaraciones CASE largas y lentas

Sintaxis y parámetros

La sintaxis básica para usar la función COALESCE en SQL es la siguiente:

SELECCIONAR COALESCE(valor_1, valor_2,valor_3,valor_4,… valor_n);

Los parámetros mencionados en la sintaxis anterior son:

COALESCE() : función SQL que devuelve el primer valor no nulo de la lista de entrada.

value_1, value_2,value_3,value_4,… value_n : Los valores de entrada que deben evaluarse.

Dado que la función COALESCE es una expresión en sí misma, puede usarse en cualquier declaración o cláusula que acepte expresiones como SELECT, WHERE y HAVING.

La función COALESCE puede considerarse una versión especializada de la declaración CASE en SQL.

La sintaxis de la declaración CASE que muestra la función de la función COALESCE es la siguiente:

SELECT nombre_columna1, nombre_columna2, nombre_columna3,
CASO
CUANDO column_name1 NO ES NULO ENTONCES column_name1
CUANDO column_name2 NO ES NULL ENTONCES column_name2 ELSE NULL
FIN como 'case_name'
DESDE nombre_tabla;

Los parámetros mencionados en la sintaxis anterior son:

Column_name1, column_name2: los valores de las columnas que deben haberse fusionado, es decir, si los resultados de cualquiera de estas columnas dan como resultado valores NULL, entonces se devolverá el primer valor no NULL entre ellos. Pero si ambos se evalúan como NULL, entonces CASE devolverá NULL.

A continuación, discutiremos la función COALESCE mencionada anteriormente con gran detalle.

Para entender mejor el concepto, tomaremos la ayuda de la tabla de empleados (que contiene los datos personales de todos los empleados).

Los datos de la tabla de “empleados” son los siguientes:

Ejemplos de SQL COALESCE

Aquí hay algunos ejemplos para comprender mejor SQL COALESCE.

Ejemplo 1

Consulta SQL para ilustrar el uso de la función COALESCE simple.

Código:

SELECT COALESCE(NULL, NULL, NULL, 'EduCBA', NULL, NULL);

Salida:

En este ejemplo, podemos ver que la función COALESCE selecciona el primer valor no NULO, lo encuentra y luego termina.

Ejemplo 2

Consulta SQL para encontrar los primeros valores no nulos del nombre y apellido de un empleado.

Código:

SELECCIONE ID de empleado, nombre, apellido,
COALESCE(nombre,apellido) como 'primer nombre no nulo'
DE empleados;

Salida:

En este ejemplo, se devuelve el primer no NULL.

Ejemplo 3

Consulta SQL para ilustrar la función COALESCE como un caso especial de CASE.

Código:

SELECCIONE ID de empleado, nombre, apellido,
CASO
CUANDO firstname NO ES NULO ENTONCES firstname
CUANDO el apellido NO ES NULO ENTONCES apellido DE LO CONTRARIO NULL
END como 'primer valor no nulo'
DE empleados;

Salida:

Compare los resultados de esta consulta y los de la consulta del tercer ejemplo. Podemos ver que ambos producen el mismo resultado. Esto se debe a que la función COALESCE se puede considerar como un caso especial de CASE.

Ejemplo 4

Consulta SQL para ilustrar el uso de la función COALESCE en valores con diferentes tipos de datos.

Código:

SELECCIONE ID de empleado, nombre, apellido,
COALESCE(id de empleado,nombre,apellido) como 'primer nombre no nulo'
DE empleados;

Salida:

En el ejemplo anterior, podemos ver que la identificación del empleado no se puede combinar con valores de datos de nombre y apellido, ya que tienen diferentes tipos de datos.

Para resolver este problema, podemos cambiar el tipo de datos de employeeid usando la función CONVERTIR como se muestra a continuación.

Código:

SELECCIONE ID de empleado, nombre, apellido,
COALESCE(CONVERT(varchar(50),employeeid),nombre,apellido) como 'primeros valores no nulos'
DE empleados;

Salida:

Ejemplo 5

Una consulta SQL compleja para ilustrar el uso de la función COALESCE.

Supongamos que queremos saber los salarios de todos los empleados de la empresa. Pero en la tabla de empleados, podemos ver que no se han mencionado los salarios de todos los empleados. Sin embargo, se han mencionado las tarifas por hora y la comisión de los empleados a los que les f altan campos salariales. Podemos usar eso para comparar los salarios de los empleados de la siguiente manera.

Código:

SELECT COALESCE(CONVERT(varchar(50),employeeid),nombre,apellido) como 'Identificador de empleado',
COALESCE(salario,tarifa_por_hora830 + COALESCE(comisión,0))como 'Compensación'
DE empleados
ORDENAR POR 2 DESC;

Salida:

Usando la primera función COALESCE, intentamos identificar a un empleado fusionando el ID de empleado, el nombre y el apellido y luego usando la segunda función COALESCE, intentamos seleccionar el salario o la compensación calculada.

Conclusión

La función SQL COALESCE es una función integrada en bases de datos como SQL Server, Azure, etc. que devuelve el primer valor no NULL de una lista de entrada de argumentos. Es muy útil en el manejo de valores nulos y ofrece una alternativa rápida y sencilla a las sentencias SQL CASE.

¡Ayuda al desarrollo del sitio, compartiendo el artículo con amigos!