Замена значений NULL на 0 в SQL запросе: SUM, CASE

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для замены NULL на 0 в SQL Server используйте функции COALESCE() или ISNULL(). Вот примеры их использования:

SQL
Скопировать код
-- Замена NULL с помощью COALESCE
SELECT COALESCE(имя_столбца, 0) FROM имя_таблицы;

-- Замена NULL с помощью ISNULL
SELECT ISNULL(имя_столбца, 0) FROM имя_таблицы;

Обе функции позволяют заменить значение NULL на 0 за время выполнения запроса.

Кинга Идем в IT: пошаговый план для смены профессии

Глублый разбор ISNULL и COALESCE

Могучий ISNULL

Функция ISNULL принимает на вход два аргумента: название столбца и значение для замены NULL. Она вычисляется всего один раз за время выполнения SELECT-запроса, обеспечивая оптимальную производительность в некоторых случаях.

SQL
Скопировать код
-- Объявляю: NULL будет повсеместно замещён «нулевыми героями»
SELECT ISNULL(имя_столбца, 0) FROM имя_таблицы;

Универсальность COALESCE

COALESCE принимает неограниченное количество аргументов и возвращает первое не-NULL значение из списка. Это добавляет гибкости в ваш код.

SQL
Скопировать код
-- Достучаться до значений: точно не до NULL
SELECT COALESCE(столбец_один, столбец_два, 0) FROM имя_таблицы;

Но помните: COALESCE, проверяя каждый параметр, может слегка замедлить выполнение запроса.

Тюнинг производительности

ISNULL работает быстрее при больших объёмах данных, поскольку значение вычисляется единожды. В то время как COALESCE, проверяя каждый параметр по одному, может уменьшить производительность.

Избегайте NULL в агрегатных функциях

Внутри функции SUM() используйте ISNULL, чтобы значения NULL не искажали общий результат. Таким образом, вы получите корректные итоги.

SQL
Скопировать код
-- Подсчитываем итоги исключая NULL-значения
SELECT SUM(ISNULL(имя_столбца, 0)) FROM имя_таблицы;

Визуализация

Рассмотрим результат SQL-запроса как ряд товаров на полке магазина:

Markdown
Скопировать код
На полке располагаются: [🍎, 🍌, NULL, 🍇]

В этом контексте, замена NULL на 0 в SQL – это как замещение пустого места на полке заглушкой-товаром:

SQL
Скопировать код
-- На полку нет пустых мест!
SELECT ISNULL(фрукт, 0) FROM полка_с_товарами;

Теперь каждый промежуток на полке заполнен:

Markdown
Скопировать код
Полка полностью укомплектована: [🍎, 🍌, 🥫, 🍇]

Где 🥫 symbolizes '0', и теперь каждое пространство занято!

Обсудим замену NULL нулем непосредственно в таблицах

Иногда эффективнее обновить таблицы, заменив значения NULL на 0 напрямую. Это исключит необходимость использования ISNULL или COALESCE в последующих запросах:

SQL
Скопировать код
-- NULL, ваш переезд настал. Ваше место займёт Ноль
UPDATE имя_таблицы
SET имя_столбца = ISNULL(имя_столбца, 0);

Направленные действия с CASE для разнообразных условий

Когда вы прорабатываете различные статусы выполнения, CASE поможет провести условное подсчёт:

SQL
Скопировать код
-- На месте, готов… Погнали! Но подождите, где NULL?
SELECT CASE 
         WHEN статус_запуска IS NULL THEN 0
         ELSE статус_запуска
       END
FROM запуски;

Этот метод предлагает вам гибкость в замене NULL на ноль, согласно ваших требований.

Ответственность за соответствие типов данных

При использовании ISNULL или COALESCE всегда убедитесь, что типы данных аргументов согласованы. Несоответствие может привести к непредвиденным ошибкам или результатам.

Полезные материалы

  1. COALESCE (Transact-SQL) – SQL Server | Microsoft Learn — глубокое погружение в функционал COALESCE в SQL Server.
  2. ISNULL (Transact-SQL) – SQL Server | Microsoft Learn — детальный разбор функции ISNULL в SQL Server.
  3. CASE (Transact-SQL) – SQL Server | Microsoft Learn — подробное руководство по использованию выражения CASE в SQL Server.
  4. Using ISNULL vs using COALESCE for checking a specific condition? – Stack Overflow — сравнение ISNULL и COALESCE в SQL Server на сайте Stack Overflow.
  5. The Many Uses of Coalesce in SQL Server — обширный обзор способов использования функции COALESCE.
  6. SQL Server: ISNULL Function — применение функции ISNULL в SQL Server, подробная информация.