暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

骨灰级科普-Oracle中的NULL,神马也不是

InDataBase 2021-04-26
790

最基础的科普了。


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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论