«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вернуть «0» вместо NULL при использовании функции SUM MySQL для пустых наборов данных?

Как вернуть «0» вместо NULL при использовании функции SUM MySQL для пустых наборов данных?

Опубликовано 5 ноября 2024 г.
Просматривать:479

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

Как получить «0» из функции SUM MySQL, когда значения не существуют

Функция SUM в MySQL предлагает удобный способ агрегирования числовых значений ценности. Однако если во время запроса не найдено ни одной совпадающей строки, функция СУММ обычно возвращает значение NULL. В некоторых случаях более желательно возвращать «0» вместо NULL.

Использование COALESCE для решения проблемы

Решение этой проблемы заключается в функция ОБЪЕДИНЕНИЕ. COALESCE позволяет указать значение по умолчанию, которое будет возвращено, когда первый аргумент принимает значение NULL.

Рассмотрим следующий пример:

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

В этом запросе COALESCE использует функцию SUM. Если СУММА Столбца_1 для строк, где Столбец_2 равен «Тест», возвращает значение NULL, COALESCE вместо этого предоставит «0».

Демонстрация и дополнительная информация

Посетите http ://www.sqlfiddle.com/#!2/d1542/3/0 для живой демонстрации решения.

Чтобы углубиться в нюансы COALESCE, рассмотрите следующий сценарий, включающий три таблицы с разными распределения значений:

  • Таблица 'foo' содержит сочетание значений NULL и отличных от NULL.
  • Таблица 'bar' содержит только значения, отличные от NULL.
  • Таблица «baz» содержит исключительно значения NULL.

Применив следующий запрос:

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

Вы получите следующие результаты:

TABLE_NAMEDESCRIPTIONEXPECTED_SUMACTUAL_SUM
fooсмешанное значение NULL/NULL2121
барвсе ненулевые2121
baz all null00

Как вы можете видеть, функция COALESCE эффективно возвращает '0' для ' baz', где все значения равны NULL.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3