В прошлом посте я показывал, один из вариантов бессмысленного усложнения запроса использованием CASE
, сегодня - продолжение.

CASE
Тут представлена попытка заNULLить значение, если оно равно чему-то.
Но ведь в PostgreSQL есть функция nullif, которая делает ровно то же самое:
NULLIF(значение1, значение2)
Функция
NULLIF
выдаёт значение NULL, еслизначение1
равнозначение2
; в противном случае она возвращаетзначение1
. Это может быть полезно для реализации обратной операции кCOALESCE
. В частности, для примера, показанного выше:
SELECT NULLIF(value, '(none)') ...
В данном примере если
value
равно(none)
, выдаётся null, а иначе возвращается значениеvalue
.
То есть в примере выше стоит переписать короче и понятнее:
, nullif(sdate, '1900-01-01') sdate
, nullif(mdate, '1900-01-01') mdate