日期:2014-05-17  浏览次数:20924 次

oracle is null 的用法问题?
问:存储过程中我的变量为:
 v_status varchar2(5) :=null;

在语句中这样使用:

SELECT * FROM A
WHERE (v_status is nul or A.status=v_status or A.status=1)

请问当v_status满足条件为null的时候,还会不会执行or后面的的语句?

注:因为正常情况在说,or前后的条件语句都会被执行..

------解决方案--------------------
会啊,或者嘛!
------解决方案--------------------
当 v_status 满足条件为 null 的时候,实际是不判断后面的 or 之后的条件了
也就是说将 A 表里所有的数据查询出来

------解决方案--------------------
v_status is null  这一句 就说明是全真了

怀疑你是不是写错了?  应该是 A.status is null 吧?
------解决方案--------------------
Yes, I think 3# floor is correct. The sentence is written wrong.

SELECT * FROM A
WHERE (A.status is nul or A.status=v_status or A.status=1)

------解决方案--------------------
不会,前面为真就已经可以确定整个表达式为真。
------解决方案--------------------
 v_status varchar2(5) :=null;

在语句中这样使用:

SELECT * FROM A
WHERE (v_status is nul or A.status=v_status or A.status=1)

结果就是
SELECT * FROM A