oracle如何查出某个字段带空格的数据

这篇文章主要为大家展示了“oracle如何查出某个字段带空格的数据”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“oracle如何查出某个字段带空格的数据”这篇文章吧。

嘉禾网站建设公司创新互联建站,嘉禾网站设计制作,有大型网站制作公司丰富经验。已为嘉禾上1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的嘉禾做网站的公司定做!

问题描述:把一个表从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如何查出某个字段带空格的数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!

网页标题:oracle如何查出某个字段带空格的数据
分享链接:https://www.cdcxhl.com/article34/pdghse.html

成都网站建设公司_创新互联,为您提供网站设计关键词优化网页设计公司营销型网站建设企业建站定制开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司