selcct distinct a,b,c from table t where t.b like '%ABC%'
类似于上面的语句,执行后仍然有重复的记录(非一个字段有重复其余两个字段不重复),请教一下为什么distinct会失效?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
有时候,它只是看上去一样,实际上不一样,可以用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
报告相同问题?