Я пишу функцию pgplsql, в которой у меня есть переменная var
, которая может быть NULL
или оценена. В более позднем запросе я:SQL: Лучший способ написать условие, которое проверяет значение переменной, когда переменная может быть нулевой
SELECT * FROM table WHERE column = var
, что в случае NULL вар, становится
SELECT * FROM table WHERE column = NULL
Таким образом, запрос терпит неудачу с NULL, потому что, как PostgreSQL documentation говорит,
Нулевое значение представляет неизвестное значение, и неизвестно, равны ли два неизвестных значения:
я решил его с CASE
заявлением:
SELECT * FROM table WHERE
(CASE WHEN var IS NULL THEN column IS NULL ELSE column = var END) = TRUE
Но я не уверен, погода это лучший способ решить вопрос ... у вас есть хорошая альтернатива?
Это также написано на документах! Виноват! – mdesantis