我正在使用Postgres v11+,并且希望在col1等于value1、value2或null时返回一个数据集。select * from table1 where col1 in (value1, value2) or col1 isnull; 但这对我不起作用,因为当我使用OR时,我有额外的条件被(错误地)传递当in语句不能与null一起工作时,postgres有什么问题?
我想使用Oracle使用sql查询检查以下条件:(select count(*) from MyTable where (:userconditionid = (select condition_id from MyTablewhere item = :useritem))
and item = :userit
检查的条件。当查看查询1的解释计划时,它看起来就像在执行子查询时一样,因为条件A2 is something不适用于子查询,所以它被延迟以用作主查询结果的筛选器。: column "A2" does not exist
但我发现情况并非如此,Postgres将不适用的子查询条件提交给主查询。这是标准行为还是
在使用Postgresql多年之后,我仍然不知道如何保护条件表达式不受变量的空值的影响,因为SQL查询规划者完全有权应用或忽略最常用的防止空值的成语:"var is null或var=0“。据说,使用“情况时”语法解决了任何歧义,但也降低了可维护性,因为它用大量的文字模糊了一个简单的过程。
谢谢,提前。