oracle怎样查出某个字段带空格的数据
发布时间:2022-01-11 09:06:07 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要为大家展示了oracle如何查出某个字段带空格的数据,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下oracle如何查出某个字段带空格的数据这篇文章吧。 问题描述:把一个表从oracle同步到阿里云 rds,居
这篇文章主要为大家展示了“oracle如何查出某个字段带空格的数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle如何查出某个字段带空格的数据”这篇文章吧。 问题描述:把一个表从oracle同步到阿里云 rds,居然报错违反唯一键,很是诧异,然后具体查看报错的那条数据,结果如下:果真有两条。 MySQL [bidinfo]> select record_id ,login_id from meminfo.t_member_info where login_id='woaini1314'; +-----------+-------------+ | record_id | login_id | +-----------+-------------+ | 15142804 | woaini1314 | | 78124319 | woaini1314 | +-----------+-------------+ 2 rows in set (0.00 sec) 然后根据id在oracle中查询,发现其中一个带空格,一个不带空格, select record_id ,login_id from infoservice.t_member_info where record_id in(15142804 ,78124319 ); 这就麻烦了,这可是用户信息,不能随便删除,猜测是用户在注册的时候,多打了个空格,然后发现登陆不上去,就从新注册了个不带空格的相同名字的用户,然而oracle能识别到空格,但是mysql识别不到空格,正好我们有会员登陆日志,经查询确实是猜想这样。那么下来怎么统计出带空格的用户的主键record_id呢? 具体描述: liuwenhe 和liuwenhe+空格 由于oracle中识别空格,以下两条sql查的结果不一样。 select record_id ,login_id from t_member_info where login_id='woaini1314'; select record_id ,login_id from t_member_info where login_id='woaini1314 '; 但是mysql中不识别空格,以下查询的结果是一样的。都是两条 MySQL [bidinfo]> select record_id ,login_id from meminfo.t_member_info where login_id='woaini1314'; +-----------+-------------+ | record_id | login_id | +-----------+-------------+ | 15142804 | woaini1314 | | 78124319 | woaini1314 | +-----------+-------------+ 2 rows in set (0.00 sec) MySQL [bidinfo]> select record_id ,login_id from meminfo.t_member_info where login_id='woaini1314 '; +-----------+-------------+ | record_id | login_id | +-----------+-------------+ | 15142804 | woaini1314 | | 78124319 | woaini1314 | +-----------+-------------+ 2 rows in set (0.00 sec) 问题出现了,这个login_id是个唯一键, oracle中不冲突,迁移到rds就违反了唯一键了, 如下怎么查出oracle中带空格的record_id,以便于从mysql中删除带空格的违反唯一键的数据。 一:先查出有问题的login_id(去掉空格之后的login_id) select count(record_id),trim(login_id) from infoservice.t_member_info group by trim(login_id) having count(record_id)>1 ; 二:然后查出所有有问题的login_id(包括带空格的和不带空格的),放到一个临时表 create table liuwenhe.t_mmeber_info_bak as select record_id ,login_id from t_member_info where trim(login_id) in (select login from ( select count(record_id),trim(login_id) login from infoservice.t_member_info group by trim(login_id) having count(record_id)>1 )) 三:最后利用前两个步骤查出的结果求出有问题的login_id中带空格的那条数据的对应的record_id. select record_id from t_mmeber_info_bak where login_id not in (select trim(login_id) from t_mmeber_info_bak) ; 四:导成txt文件,然后利用lord 进mysql。 最后根据record_id在mysql中删除相应的数据,即可, 以上是“oracle如何查出某个字段带空格的数据”这篇文章的所有内容,感谢各位的阅读! (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |