最基础的科普了。
Oracle中NULL不能参与比较、计算,只能用IS [NOT] NULL或者专门的NULL函数
NULL的操作仅仅包括IS NULL和IS NOT NULL
NULL意味着该值不可用、未指派、未知的、无效或不适用
因此不能使用=来测试,它不同于0或者空格
因为空值无法等于或者不等于任何值。
也就是说null=null 这种是不成立的。
⊙ 注意not in 空值造成误操作


上面四个查询看懂了吗?
尤其第四个,name != NULL是不成立的,所以没有结果返回。
但是在第二个,in操作时,NULL是被忽略的。
如何在使用NOT IN时,处理子查询中的NULL呢?
可以有以下两种方法处理
1、not in (select * from t where name is not null)
2、where not exists (select 1 from t where a.name = b.name)
⊙看看NULL与TRUE、FALSE的比较
1). NULL AND TRUE

2). NOT (NULL AND TRUE)

3). NULL AND FALSE

4).NULL OR TRUE

5).NOT (NULL AND FALSE)

第二个别弄错了,not (A and B) 转换为not A OR not B
第五个也一样,not (A and B) 转换为not A OR not B
⊙最后看看NULL值排序
NULL排在最后一个 (默认升序),如何调整NULL在排序中的位置呢
空值排在最后一个 => NULLS LAST

空值排在最早一个 => NULLS FIRST

NULL在Oracle的处理有别于其他数据库,告诉你一个不常 Get到的点
null和''在Oracle中是等价的。
文章转载自InDataBase,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




