"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo devolver \'0\' en lugar de NULL cuando se utiliza la función SUM de MySQL en conjuntos de datos vacíos?

¿Cómo devolver \'0\' en lugar de NULL cuando se utiliza la función SUM de MySQL en conjuntos de datos vacíos?

Publicado el 2024-11-05
Navegar:688

How to Return \'0\' Instead of NULL When Using MySQL\'s SUM Function on Empty Datasets?

Cómo recuperar '0' de la función SUMA de MySQL cuando no existen valores

La función SUMA en MySQL ofrece una manera conveniente de agregar números valores. Sin embargo, cuando no se encuentran filas coincidentes durante la consulta, la función SUMA normalmente devuelve un valor NULL. Para algunos casos de uso, puede ser más conveniente devolver '0' en lugar de NULL.

Utilizando COALESCE para resolver el problema

La solución a este problema radica en la función FUSIONAR. COALESCE le permite especificar un valor predeterminado que se devolverá cuando el primer argumento se evalúe como NULL.

Considere el siguiente ejemplo:

SELECT COALESCE(SUM(Column_1),0)
FROM Table
WHERE Column_2 = 'Test'

En esta consulta, COALESCE envuelve la función SUMA. Si la SUMA de Column_1 para las filas donde Column_2 es ​​igual a 'Prueba' devuelve un valor NULL, COALESCE proporcionará '0'.

Demostración y más información

Visite http ://www.sqlfiddle.com/#!2/d1542/3/0 para ver una demostración en vivo de la solución.

Para profundizar en los matices de COALESCE, considere el siguiente escenario que involucra tres tablas con diferentes distribuciones de valores:

  • La tabla 'foo' contiene una combinación de valores NULL y no NULL.
  • La tabla 'bar' contiene únicamente valores no NULL.
  • La tabla 'baz' contiene exclusivamente valores NULL.

Aplicando la siguiente consulta:

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz

Obtendrás los siguientes resultados:

TABLE_NAMEDESCRIPCIÓNEXPECTED_SUMACTUAL_SUM
foomixto nulo/no nulo2121
barratodo no nulo2121
baz all null00

Como puede observar, la función COALESCE devuelve eficientemente '0' para el ' tabla baz', donde todos los valores son NULL.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3