Puede usar ambos métodos, pero hay diferencias:
SELECT ISNULL(col1, 0 ) FROM table1
SELECT COALESCE(col1, 0 ) FROM table1
Comparando COALESCE () y ISNULL ():
La función ISNULL y la expresión COALESCE tienen un propósito similar pero pueden comportarse de manera diferente.
Debido a que ISNULL es una función, se evalúa solo una vez. Como se describió anteriormente, los valores de entrada para la expresión COALESCE se pueden evaluar varias veces.
La determinación del tipo de datos de la expresión resultante es diferente. ISNULL usa el tipo de datos del primer parámetro, COALESCE sigue las reglas de expresión CASE y devuelve el tipo de datos de valor con la mayor prioridad.
La NULLability de la expresión del resultado es diferente para ISNULL y COALESCE. El valor de retorno ISNULL siempre se considera NO NULABLE (suponiendo que el valor de retorno sea no anulable) mientras que COALESCE con parámetros no nulos se considera NULL. Entonces las expresiones ISNULL (NULL, 1) y COALESCE (NULL, 1) aunque equivalentes tienen valores de nulabilidad diferentes. Esto hace la diferencia si está utilizando estas expresiones en columnas calculadas, creando restricciones clave o haciendo que el valor de retorno de un UDF escalar sea determinista para que pueda indexarse como se muestra en el siguiente ejemplo.
- Esta declaración falla porque la PRIMARY KEY no puede aceptar valores NULL, y la nulabilidad de la expresión COALESCE para col2 se evalúa como NULL.
CREATE TABLE #Demo
(
col1 integer NULL,
col2 AS COALESCE(col1, 0) PRIMARY KEY,
col3 AS ISNULL(col1, 0)
);
- Esta declaración tiene éxito porque la nulabilidad de la función - ISNULL evalúa AS NOT NULL.
CREATE TABLE #Demo
(
col1 integer NULL,
col2 AS COALESCE(col1, 0),
col3 AS ISNULL(col1, 0) PRIMARY KEY
);
Las validaciones para ISNULL y COALESCE también son diferentes. Por ejemplo, un valor NULL para ISNULL se convierte en int, mientras que para COALESCE, debe proporcionar un tipo de datos.
ISNULL toma solo 2 parámetros, mientras que COALESCE toma un número variable de parámetros.
si necesita saber más aquí está el documento completo de msdn.