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)
但我不确定这是解决问题的最佳方法......你有什么好的选择吗?