Menu
Coddy logo textTech

NULLIF и IIF

Часть раздела Продвинутый уровень путешествия по SQL на Coddy — урок 4 из 27.

Еще два условных помощника, оба небольшие и полезные.

NULLIF(a, b) возвращает NULL, когда a = b, в противном случае — a. Классический вариант использования — защита от деления на ноль:

SELECT total / NULLIF(count, 0) AS average
FROM stats

Если count равно нулю, мы получим NULL вместо ошибки.

IIF(cond, a, b) — это сокращенная запись с двумя ветвями для CASE WHEN cond THEN a ELSE b END. Используйте её, когда выбор бинарный; используйте CASE, когда ветвей больше.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • <strong>matches</strong>: <strong>id</strong>, <strong>shots</strong>, <strong>goals</strong>

Для каждого матча верните:

  • id
  • conversion: goals * 1.0 / shots, но NULL, когда shots равно 0 (используйте NULLIF)
  • verdict: 'win', когда goals > 0, в противном случае 'no goals' (используйте IIF)

Отсортируйте по id.

Шпаргалка

NULLIF(a, b) возвращает NULL, когда a = b, в противном случае возвращает a. Полезно для предотвращения деления на ноль:

SELECT total / NULLIF(count, 0) AS average
FROM stats

IIF(cond, a, b) — это сокращенная запись для CASE с двумя ветвями:

SELECT IIF(goals > 0, 'win', 'no goals') AS verdict
FROM matches

Попробуйте сами

SELECT id,
       -- преобразование с использованием NULLIF
       -- вердикт с использованием IIF
FROM matches
ORDER BY id
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень