測試一個觸發器時,發現trim(非空string)&的結果為false,進而進行了上述測試。


Oracle認為 is null (別的語言,比如說java,不是)

判斷空得用is

不能用等號,也不能用不等號。

空不等於空為假。空等於空也為假。空等於非空為假,空不等於非空也為假。

進一步說,你得看數論和集合論。集合論裡面,兩個空集不能說相等,也不能說不相等。

空不是0,0比1小比-1大,空比1大還是小?不等號其實就是大於或者小於的意思。空不大於1也不小於1,所以空並非不等於1。同時也可知道空不是等於1。所以大於小於等於符號皆不可用於空集,不等號同理可得。

總之等號,大於,小於,不等符號用在空上均為假。


學習了,謝謝樓主http://www.aiphere.com
在我大oracle中就是null null表示未知,未知不等於未知。所以你的where條件返回false,最後返回空結果集
null不等於null null is null


is null 是true
樓主有沒有試過不加where的結果貌似也是空,所以我沒有理解到得到false為嘛要用這個來驗證?順便,Oracle中null不等於任何值,其中包括null自己,對null的判斷是is null或者nvl一下再判斷比較靠譜。個人觀點,勿噴。
1.Oracle中的空字元串基本上是被當成NULL來處理的2.NULL代表未知,不可判斷,所以對NULL的判斷只能定性,既是不是NULL(IS NULL/IS NOT NULL),而不能定值,對NULL的=、!=、&>、&=、&<=等操作的結果都是未知的,也就算說,這些操作的結果仍然是NULL。同理,對NULL進行+、-、*、/等操作的結果也是未知的,所以也是NULL。


推薦閱讀:
相关文章