¿Qué es la función de fusión
Función de fusión es una función útil en Oracle y es muy útil cuando queremos devolver los primeros valores no nulos en la lista. Este tutorial de SQL proporciona explicaciones, ejemplos de la función Coalesce en Oracle y la diferencia entre Coalesce y NVL

expr1 :Esto se devuelve si no es nulo
expr2:Esto se devuelve si no es nulo y la primera expresión es nula
exprn:Esto se devuelve si la expresión anterior es nula
Por lo tanto, Coalesce en Oracle devolverá la primera expresión si no es nula; de lo contrario, fusionará el resto de la expresión
Punto importante
(1) La base de datos de Oracle utiliza evaluación de cortocircuito. La base de datos evalúa cada valor de expresión y determina si es NULL, en lugar de evaluar todos los valores de expresión antes de determinar si alguno de ellos es NULL.
(2) COALESCE en Oracle es equivalente a la función Case
Entonces COALESCE (expr1, expr2) es equivalente a:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
Del mismo modo,
COALESCE (expr1, expr2, …, exprn), para n>=3 es equivalente a:
CASE WHEN expr1 IS NOT NULL THEN expr1 WHEN expr2 IS NOT NULL THEN expr2 WHEN expr3 IS NOT NULL THEN expr3 WHEN exprn IS NOT NULL THEN exprn END
O esto se puede escribir como
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE COALESCE (expr2, ..., exprn) END
(3) Por lo general, todas las expr de la instrucción coalesce deben ser del mismo tipo de datos; de lo contrario, se devolverá ORA-00932.
SQL> select coalesce('a',1,2) from dual; select coalesce('a',1,2) from dual * ERROR at line 1: ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
Si todas las apariciones de expresión son tipos de datos numéricos o cualquier tipo de datos no numérico que se pueda convertir implícitamente a un tipo de datos numérico, Oracle Database determina el argumento con la precedencia numérica más alta, convierte implícitamente los argumentos restantes a ese tipo de datos y devuelve ese tipo de datos.
Cómo utilizar la función de fusión
SQL> select coalesce(1,2,3) from dual; COALESCE(1,2,3) --------------- 1 SQL> SELECT COALESCE(null, null, null, 'X', 'Y'); COALESCE(...) --------------- X
Ejemplos de fusión
Supongamos que tenemos una tabla de oráculo de empleados que consta de dirección1, dirección2 y dirección3 y podemos querer imprimir la primera dirección no nula de los empleados de la tabla en orden de prioridad dirección1> dirección2> dirección3
select emp_name, COALESCE(address1,address2,address3) from employee;
Diferencia entre la función Coalesce y NVL
- Coalesce es la generalización de la función NVL. La función NVL se puede usar para dos expresiones, mientras que coalesce se puede usar para Muchas
- En el caso de dos expresiones, son iguales pero la implementación es diferente. Oracle evalúa ambas expresiones en el caso de NVL, mientras que solo evalúa la primera expresión en caso de fusión. Entonces, si la segunda expresión tiene errores, NVL generará un error mientras que coalescer no lo hará.
- Coalesce es el estándar ANSI, mientras que NVL es específico de Oracle
Artículos relacionados
Tutorial de Oracle Sql
Función NULLIF en Oracle
Función NVL en Oracle
Función Oracle LISTAGG
https://docs.oracle.com/cd/B28359_01/server.111/b28286/ funciones023.htm#SQLRF00617