В прошлом посте я показывал, один из вариантов бессмысленного усложнения запроса использованием CASE
, сегодня - продолжение.
![Еще пара бесполезных CASE Еще пара бесполезных CASE](https://habrastorage.org/getpro/habr/upload_files/07b/bd7/230/07bbd72304af5a61816f4fa7ac231167.png)
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