oracle null相关问题


select t1.a, t1.b, sum(t1.c),count(1)
from (select t.a, t.b, t.c from t where t.b is not null) t1
group by t1.a, t1.b

今天遇到上面结构的sql,我在子查询那里已经限制not null,为什么最后出来的结果里面b字段还是有空值的?

你把那个b字段,用lengthb函数看一下字节长度为多少,是不是真的为空,可能只是你看不到而已,并不代表它就是null

select t1.a, lengthb(t1.b), sum(t1.c),count(1)
from (select t.a, t.b, t.c from t where t.b is not null) t1
group by t1.a, t1.b

我这篇文章中有类似的介绍

【ORACLE】字符串处理小技巧之字符串不可见字符的识别与处理_DarkAthena的博客-CSDN博客 背景有些开发人员在做跨系统传输数据时,偶尔会遇到字符串中包含不可见字符的情况,导致无法在sql的where条件里精确检索这条数据,只能用like模糊查找,比如下面这个数据分析两行中,A列的值看上去是一样的,但是下面这条sql,却只能查出一条记录对比下字符串长度,发现长度不一致稍微有点经验的会说,这不就一个空格、回车或者换行嘛。但是当你用光标上下左右移动去数能移动几次时,发现的确只能数出来3个,多的那个字符是真的"不可见"!它既不是回车也不是换行!用trim函数也无法去除!这个时候,如果 https://darkathena.blog.csdn.net/article/details/122421264?spm=1001.2014.3001.5502