2010-04-22 61 views
3
if not (i_ReLaunch = 1 and (dt_enddate is not null)) 

這怎麼epression將在Oracle 10g中 進行評估時,i_ReLaunch = null的輸入值和dt_enddate的值不爲空 它進入循環計算NULL。 根據正常C#中的規則,所有它不應該作爲 進入循環,它將如下的值。如何的Oracle 10g在布爾表達式中

If(not(false and (true)) = if not(false) =if(true)這意味着它應該進入循環

但情況並非如此

有人可以讓我知道,如果我錯在任何地方在Oracle中NULL值

回答

3

布爾運算返回UNKNOWN - 不是真的或假的。所以,你有這樣的事情:

If(not(UNKNOWN and (true)) = if not(UNKNOWN) =if(UNKNOWN) 

在這種情況下,IF將把UNKNOWN爲假。

如果i_relaunch可以爲null,那麼您需要使用一些NULL處理函數(NVL, NVL2, NULLIF, COALESCE, LNNVL)來確保您有正確的結果。

請參閱以下文章瞭解更多信息: