Умовністандарт SQL

COALESCE

Повертає перше значення зі списку, яке не NULL.

Синтаксис

COALESCE(<значення1>, <значення2>, …)

Перевіряє аргументи зліва направо й повертає перший, що не NULL. Якщо NULL усі — результат теж NULL. Найчастіше цю функцію використовують для підставлення значення за замовчуванням, наприклад: «телефону нема — показати прочерк».

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Перше значення, що не NULL
SELECT COALESCE(NULL, NULL, 42) AS result;
result
42
Прочерк замість порожнього телефону
SELECT name, COALESCE(phone, '—') AS phone
FROM employees;
namephone
Emma+44 7700 900123
Liam—
Olivia+44 7700 900456
Noah+44 7700 900789
Sophia—
NULL «з'їдає» арифметику
SELECT name,
salary + bonus AS without_coalesce,
salary + COALESCE(bonus, 0) AS total
FROM employees;
namewithout_coalescetotal
Emma15001500
LiamNULL1000
Olivia15001500
NoahNULL950
Sophia14001400

Будь-яка дія з NULL дає NULL: у Liam і Noah бонусу нема, тож без COALESCE їхня сума зникла б зовсім.

Зверни увагу

Аргументи мають бути сумісного типу. COALESCE(bonus, 'n/a') для числового бонусу дасть помилку: PostgreSQL спробує перетворити 'n/a' на число. Приведи до тексту: COALESCE(bonus::text, 'n/a').

Порожній рядок '' — це не NULL, тож COALESCE його не замінить. Для такого поєднують із NULLIF: COALESCE(NULLIF(phone, ''), '—').

Схожі функції

Детально в курсі