oracle 查询 空值 注意不是 null
为什么我用下面两个语句都查不出数据:selectcount(*)fromAwherenvl(b,'')=''和selectcount(*)fromAwherenvl(b,...
为什么我用下面两个语句都查不出数据 :
select count(*) from A where nvl(b,'') = ''
和select count(*) from A where nvl(b,'') <> ''
我的表A里有大量数据,为什么用上面两个都查不到呢 展开
select count(*) from A where nvl(b,'') = ''
和select count(*) from A where nvl(b,'') <> ''
我的表A里有大量数据,为什么用上面两个都查不到呢 展开
6个回答
展开全部
oracle中varchar,varchar2,nvarchar,nvarchar2的区别
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
VARCHAR2把空串等同于null处理
因此, 你那里的
select count(*) from A where nvl(b,'') = ''
和select count(*) from A where nvl(b,'') <> ''
被 等同为
select count(*) from A where nvl(b,null) = null
和select count(*) from A where nvl(b,null) <> null
所以查询不出数据。
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
VARCHAR2把空串等同于null处理
因此, 你那里的
select count(*) from A where nvl(b,'') = ''
和select count(*) from A where nvl(b,'') <> ''
被 等同为
select count(*) from A where nvl(b,null) = null
和select count(*) from A where nvl(b,null) <> null
所以查询不出数据。
参考资料: http://apps.hi.baidu.com/share/detail/18768651
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle中没有空字符串的,只有null,而且判断是否非空只能用is null或is not null,与null的运算,结果仍然是null。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
‘’在oralce 就是null值,
你查询下 select count(*) from A where b is not null and trim(b) is null 看看
如果不行,看看b里是否有全角的空格
你查询下 select count(*) from A where b is not null and trim(b) is null 看看
如果不行,看看b里是否有全角的空格
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select count(*) from A where nvl(b,' ') = ' '
select count(*) from A where b is null
select count(*) from A where b is not null
select count(*) from A where b is null
select count(*) from A where b is not null
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询