SQL:编写一个条件的最佳方法,该条件在变量为null时检查变量的值

mde*_*tis 2 sql database postgresql

我正在编写一个pgplsql函数,其中我有一个var可以NULL或已经定价的变量.在稍后的查询中我做:

SELECT * FROM table WHERE column = var
Run Code Online (Sandbox Code Playgroud)

如果是NULL var,则变为

SELECT * FROM table WHERE column = NULL
Run Code Online (Sandbox Code Playgroud)

因此,查询失败并返回NULL,因为正如PostgreSQL文档所述,

空值表示未知值,并且不知道两个未知值是否相等

我用CASE声明解决了这个问题:

SELECT * FROM table WHERE 
( CASE WHEN var IS NULL THEN column IS NULL ELSE column = var END ) = TRUE
Run Code Online (Sandbox Code Playgroud)

但我不确定这是解决问题的最佳方法......你有什么好的选择吗?

Dan*_*iel 5

SELECT * FROM table WHERE column IS NOT DISTINCT FROM var
Run Code Online (Sandbox Code Playgroud)