一个关于NULL的问题

snoopy_wx 2003-04-28 01:03:53

例如tablea 中的记录有
field1 field2
0000 aa
0001 bb
0003 cc
0004 bb
0005 null
0006 null
执行情况select * from tablea where field2 != 'aa'
结果为
field1 field2
0001 bb
0003 cc
0004 bb

为何field2为NULL的记录为何结果中没有被选出来
...全文
88 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
suleen 2003-04-30
  • 打赏
  • 举报
回复
NULL='aa' is false
NULL<>'aa' also false
ejb99666 2003-04-30
  • 打赏
  • 举报
回复
王八的屁股------规定
jiezhi 2003-04-29
  • 打赏
  • 举报
回复
我上面说错了。
null='aa' ---不能确定
null!='aa' ---不能确定
null是不确定的。


------------------------
| |
| 相逢何必曾相识 |
| |
------------------------
icystone 2003-04-29
  • 打赏
  • 举报
回复
它只表示有还是没有,而不表示是什么
icystone 2003-04-29
  • 打赏
  • 举报
回复
没有原因,这是规定!
null是不知道是什么东东,所以不知道等于还是不等于'aa'
yuanscar 2003-04-29
  • 打赏
  • 举报
回复
null是一个特殊的值,这个问题有点难解释,就好像NULL和0的区别一样,NULL应该是不支持“=”符号的,我就是这么理解的。
snoopy_wx 2003-04-29
  • 打赏
  • 举报
回复
我也知道这两种方发可以,但是我就是不明白为什么
null不是不等于'aa'吗?为什么这样的纪录就不被选取呢
beckhambobo 2003-04-29
  • 打赏
  • 举报
回复
select * from tablea
minus
select * from tablea where field2 ='aa';
ejb99666 2003-04-28
  • 打赏
  • 举报
回复
回复人: black_snail(●龙飞虎○) ( )

select * from tablea where nvl(field2,'NULL') != 'aa'

回复人: w_tsinghua() ( )

select * from tablea where field2 != 'aa' or field2 is null


两种方法都应该可以。

试试
w_tsinghua 2003-04-28
  • 打赏
  • 举报
回复
select * from tablea where field2 != 'aa' or field2 is null
jiezhi 2003-04-28
  • 打赏
  • 举报
回复
oracle的三值逻辑:
null!=null
null!='aa'
black_snail 2003-04-28
  • 打赏
  • 举报
回复
select * from tablea where nvl(field2,'NULL') != 'aa'

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧