将“column = null”转换为“column is null”?

时间:2013-09-19 20:48:18

标签: sql oracle syntax null oracle10g

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

select * from table
where column = value;

问题是value为NULL会破坏查询。我意识到我需要做where column is null,过去我在评估价值后创建了动态查询。

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

4 个答案:

答案 0 :(得分:5)

一个简单的解决方案是:

where ((value is null     and column is null) or
       (value is not null and column = value))

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

答案 1 :(得分:2)

如果您希望将NULL值比较为等于:

select *
from table
where (column = value or column is null and value is null);

答案 2 :(得分:0)

或许

where (column is null) OR (column = value)

答案 3 :(得分:0)

使用NVl(值,'如果为空则赋值')

这是特定的oracle。