Oracle 10g 如何计算布尔表达式中的 NULL
if not (i_ReLaunch = 1 and (dt_enddate is not null))
Oracle 10g 中如何评估此表达式 当i_ReLaunch = null
的输入值且dt_enddate
的值不为null时 它正在进入循环。 根据普通 c# 中的规则,它不应该进入循环 其值如下。
If( not(假和(真)) = 如果不是(假) =if(true)
这意味着它应该进入循环
但它没有发生
有人可以让我知道我是否在任何地方错了
if not (i_ReLaunch = 1 and (dt_enddate is not null))
How this epression will be evaluated in Oracle 10g
when the input value of the i_ReLaunch = null
and the value of the dt_enddate
is not null
it is entering the loop.
According to the rules in normal c# and all it should not enter the loop as
it will be as follows with the values.
If( not(false and (true))
which implies it should enters the loop
= if not( false)
=if( true)
But it is not happening
Can someone let me know if i am wrong at any place
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Oracle 中具有 NULL 值的布尔运算返回
UNKNOWN
- 不是 true 或 false。所以你有这样的情况:在这种情况下,
IF
会将 UNKNOWN 视为 false。如果
i_relaunch
可以为null,那么您需要使用一些NULL处理函数(NVL,NVL2,NULLIF,COALESCE,LNNVL
)来确保您得到正确的结果。有关详细信息,请参阅以下文章:
处理比较和条件语句中的空值
Boolean operations with NULL value in Oracle return
UNKNOWN
- not true or false. So you have something like this:In this case,
IF
will treat UNKNOWN as false.If
i_relaunch
can be null, then you need to use some of NULL handling functions(NVL, NVL2, NULLIF, COALESCE, LNNVL
) to be sure that you have correct result.See these article for more information:
Handling Null Values in Comparisons and Conditional Statements