Saltar al contenido

Reemplazar NULL con 0 en una consulta de servidor SQL

Te sugerimos que pruebes esta respuesta en un entorno controlado antes de pasarlo a producción, saludos.

Solución:

Cuando desee reemplazar un posible null columna con algo más, use IsNull.

SELECT ISNULL(myColumn, 0 ) FROM myTable

Esto pondrá un 0 en myColumn si es null en primer lugar.

Puede usar ambos métodos, pero hay diferencias:

SELECT ISNULL(col1, 0 ) FROM table1
SELECT COALESCE(col1, 0 ) FROM table1

Comparando COALESCE() y ISNULL():

  1. La función ISNULL y la expresión COALESCE tienen un propósito similar pero pueden comportarse de manera diferente.

  2. 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.

  3. 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 prioridad más alta.

  4. La capacidad NULL de la expresión de resultado es diferente para ISNULL y COALESCE. El valor devuelto por ISNULL siempre se considera NO NULLable (asumiendo que el valor devuelto no es anulable) mientras que COALESCE con no-null los parámetros se consideran NULL. Entonces, las expresiones ISNULL(NULL, 1) y COALESCE(NULL, 1), aunque equivalentes, tienen diferentes valores de nulabilidad. Esto hace una diferencia si está usando estas expresiones en columnas calculadas, creando key restricciones o hacer que el valor de retorno de una UDF escalar sea determinista para que pueda indexarse ​​como se muestra en el siguiente ejemplo.

— Esta declaración falla porque 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 se evalúa COMO NO NULL.

CREATE TABLE #Demo 
( 
    col1 integer NULL, 
    col2 AS COALESCE(col1, 0), 
    col3 AS ISNULL(col1, 0) PRIMARY KEY 
);
  1. 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.

  2. 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.

Con coalesce:

coalesce(column_name,0)

Aunque, donde sumando when condition then 1podrías cambiar fácilmente sum para count – p.ej:

count(case when c.runstatus = 'Succeeded' then 1 end) as Succeeded,

(Count(null) devuelve 0, mientras que sum(null) devoluciones null.)

Aquí puedes ver las comentarios y valoraciones de los usuarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *