TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #593 2.61K
Як додати у PostgreSQL тернарний оператор?
#db

TL;DR; додайте замість тернарника збережену процедура iif

PostgreSQL має дуже обмежену функціональність для умовних виразів (Conditional Expressions):
– CASE дуже схожий на switch case
– COALESCE, що повертає перший зі своїх аргументів, який не є нульовим
– NULLIF повертає null, якщо значення дорівнює одне іншому; інакше повертає перше значення.
– GREATEST/LEAST повертає найбільше/найменше значення

Тернарного оператора немає, його заміна за допомогою CASE виглядає так:
CASE WHEN condition THEN true_result ELSE false_result END
Багатослівно, та й ще важко знаходити помилки коли використовуються різні типи даних. Це типова проблема на проектах з LowCode admin UI (наприклад retool) чи LowCode Analytics (наприклад Looker Studio).

Для спрощення я додаю збережену процедура:
CREATE or replace FUNCTION iIF(
condition boolean, -- IF condition
true_result anyelement, -- THEN
false_result anyelement -- ELSE
) RETURNS anyelement AS $f$
SELECT CASE WHEN condition THEN true_result ELSE false_result END
$f$ LANGUAGE SQL IMMUTABLE;

Після цього можна використовувати
iff(condition, true_result, false_result)

Читати та підтримувати це простіше. Особливо аналітикам, які звикли до Google Sheets.

⚠️Традиційне застереження⚠️ не використовує збережені процедури для бізнес-логіки, бо це розмазує її реалізацію між Node.js кодом та кодом збережених процедур.
  • 👍 21
  • 🔥 3
  • ❤ 2
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →