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