测试一个触发器时,发现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。


推荐阅读:
相关文章