将"column = null"转换为"column is null"?

McA*_*hey 2 sql oracle syntax null oracle10g

我有一个简单的存储过程,动态地从游标获取值.问题是在不同的点上,一些绑定值可以是NULL.我希望以后能够在另一个查询中使用这些绑定值,例如:

select * from table
where column = value;
Run Code Online (Sandbox Code Playgroud)

问题是valueNULL是打破查询的.我意识到我需要做一个where column is null,过去我在评估值后创建了动态查询.

如何简单地进行此比较以涵盖NULL值和填充的VARCHAR2值?

Dav*_*dge 5

一个简单的解决方案是:

where ((value is null     and column is null) or
       (value is not null and column = value))
Run Code Online (Sandbox Code Playgroud)

您可能希望确保列上的索引实际上是(列,0),以便包含空值(并且优化器知道它们包含在内).