selcct distinct a,b,c from table t
where t.b like '%ABC%'
类似于上面的语句,执行后仍然有重复的记录(非一个字段有重复其余两个字段不重复),请教一下为什么distinct会失效?
有时候,它只是看上去一样,实际上不一样,可以用dump函数或者utl_raw.cast_to_raw函数来看它实际存的是什么东西,比如
select a,b,c,dump(a),dump(b),dump(c) from
(
select distinct a,b,c from table t
where t.b like '%ABC%'
)
具体原理可以参考我的两篇文章
【ORACLE】字符串处理小技巧之字符串不可见字符的识别与处理_DarkAthena的博客-CSDN博客 背景有些开发人员在做跨系统传输数据时,偶尔会遇到字符串中包含不可见字符的情况,导致无法在sql的where条件里精确检索这条数据,只能用like模糊查找,比如下面这个数据分析两行中,A列的值看上去是一样的,但是下面这条sql,却只能查出一条记录对比下字符串长度,发现长度不一致稍微有点经验的会说,这不就一个空格、回车或者换行嘛。但是当你用光标上下左右移动去数能移动几次时,发现的确只能数出来3个,多的那个字符是真的"不可见"!它既不是回车也不是换行!用trim函数也无法去除!这个时候,如果
https://darkathena.blog.csdn.net/article/details/122421264
【ORACLE】谈一谈Oracle数据库使用的字符集,不仅仅是乱码_DarkAthena的博客-CSDN博客 一、前言先看一个比较有意思的案例上面这个sql,查询了a和b两个字段,均为"张三"两个汉字,并且使用length函数检查,长度均为2。但是,当你看到下面这几个sql的输出结果时,很有可能第一反应是:"这特喵的怎么可能?"其实,你所看到的两个"张三",的确长得是一模一样,用显微镜去看也不可能看到区别。但为什么a和b不相等呢?这是因为组成他们的成分不一样,这个成分就是 字符集二、什么是字符集?百度百科简单来说,字符(Character)是各种文字和符号的总称,包括各国家文字、标
https://darkathena.blog.csdn.net/article/details/122659532 dinstinct a,b,c 保持 a,b,c 不出现重复, 例如 1,1,2 1,1,3 是不重复的 1,1,1 1,1,1 是重复的,就会过滤一条