"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como retornar '0' em vez de NULL ao usar a função SUM do MySQL em conjuntos de dados vazios?

Como retornar '0' em vez de NULL ao usar a função SUM do MySQL em conjuntos de dados vazios?

Publicado em 2024-11-05
Navegar:434

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

Como recuperar '0' da função SUM do MySQL quando não existem valores

A função SUM no MySQL oferece uma maneira conveniente de agregar números valores. No entanto, quando nenhuma linha correspondente é encontrada durante a consulta, a função SUM normalmente retorna um valor NULL. Para alguns casos de uso, pode ser mais desejável retornar '0' em vez de NULL.

Utilizando COALESCE para resolver o problema

A solução para este problema está em a função COALESCE. COALESCE permite que você especifique um valor padrão a ser retornado quando o primeiro argumento for avaliado como NULL.

Considere o seguinte exemplo:

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

Nesta consulta, COALESCE envolve a função SUM. Se a SOMA da Coluna_1 para linhas onde Coluna_2 for igual a 'Teste' retornar um valor NULO, COALESCE fornecerá '0'.

Demonstração e mais informações

Visite http ://www.sqlfiddle.com/#!2/d1542/3/0 para uma demonstração ao vivo da solução.

Para se aprofundar nas nuances do COALESCE, considere o seguinte cenário envolvendo três tabelas com diferentes distribuições de valores:

  • A tabela 'foo' contém uma mistura de valores NULL e não NULL.
  • A tabela 'bar' contém apenas valores não NULL.
  • A tabela 'baz' contém exclusivamente valores NULL.

Aplicando a seguinte 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

Você obterá os seguintes resultados:

TABLE_NAMEDESCRIPTIONEXPECTED_SUMACTUAL_SUM
foomisto nulo/não nulo2121
bartodos não nulos2121
baz all null00

Como você pode observar, a função COALESCE retorna eficientemente '0' para o ' tabela baz', onde todos os valores são NULL.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3