select t.*, t.rowid from TEST t where t.pid!='2' 为什么当pid为空时查不出来当行数据

Fairy_Lyk 发布于 2016/09/30 09:32
阅读 349
收藏 0
select t.*, t.rowid from TEST t where t.pid!='2' 为什么当pid为空时查不出来当行数据
加载中
0
c
catlover
空值只能用null来进行比较,使用判断符号无法识别出来~
0
Fairy_Lyk
Fairy_Lyk

引用来自“catlover”的评论

空值只能用null来进行比较,使用判断符号无法识别出来~
解决啦
select t.*, t.rowid from TEST t where  t.isman is not null and (t.pid!='2' or t.pid is null);
Fairy_Lyk
Fairy_Lyk
回复 @catlover : 赞
c
catlover
哦,你是要优化sql呀,下面这个简单些 select t.*, t.rowid from TEST t where t.isman is not null and nvl(t.pid, 0) !='2';
0
sxgkwei
sxgkwei
null; 不是=2,也不是!=2
0
Ambitor
Ambitor
null在数据Page中不占用任何空间,只会在数据也的头有3个位 表示 当行数据页哪些字段为空。所以!=2或者=2都查不出null的数据 只能用is Null 或者not is Null,这个时候是查那3个位,而不是查数据页的列,希望你明白了
0
l
liun
sql中null不等于任何值,可以理解为未知,两个null也是不相等的,只能用is || is not比较
返回顶部
顶部