oracle is not null 过滤不了Null值
5M
各位专家,
今天遇到一个比较奇怪的问题,我们的一个很简单的查询语句,在其中一个字段上添加了 is not null 的过滤条件,但是查询出来的结果里面,这个字段的其中一些值,无论怎么看都显示为空。通过对这些异常值的utl_raw.cast_to_raw 转换,或者dump函数转换的结果来看,无论怎么看他们都是空值。具体的可以看看截图。各位专家有没有碰到过这种情况的。oracle 11204版本,oracle linux系统。
收藏
复制链接
微信扫码分享
在小程序上查看
分享
8条回答
默认
最新
select * from tb where field=chr(0);
oracle确实存在这个问题,参考:
https://www.modb.pro/db/33720
评论
有用 0
打赏 0
字段为空和null不一样哦,你可以按这个: 字段!='' or 字段 is not null作为条件去掉
评论
有用 0
打赏 0
推测你字段中的值并不是NULL,而是空格。
举例测试如下:
SQL> create table test_null(id number,c1 varchar2(16));
Table created.
SQL> insert into test_null values(1,NULL);
1 row created.
SQL> insert into test_null values(2,'');--无空格
1 row created.
SQL> insert into test_null values(3,' ');--有1个空格
1 row created.
SQL> commit;
Commit complete.
SQL> select id,dump(c1,1016) res,length(c1) from test_null;
ID RES LENGTH(C1)
---------- ------------------------------------------------------------ ----------
1 NULL
2 NULL
3 Typ=1 Len=1 CharacterSet=AL32UTF8: 20 1
SQL>
评论
有用 0
打赏 0
查下长度,查下ascii码(可能是不可见字符):
select length(c_customer_accounts),ascii(c_customer_accounts) from dual;
评论
有用 0
打赏 0
dump一下,看下里面到底是什么,对照ASCII码表去看就知道是什么啦!
select c_customer_accounts,dump(c_customer_accounts) from your_table ....
评论
有用 0
打赏 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏