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

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

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

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_NAMEОПИСАНИЕEXP ECTED_SUMACTUAL_SUM
fooсмешанный null/non-null2121
барвсе ненулевое2121
bazвсе пустое00

Как видите, Функция COALESCE эффективно возвращает «0» для таблицы «baz», где все значения равны NULL.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3