oracle varchar2字段中的乱码数据提取

由于工作需要,在迁移一批数据时发现一张表的varchar2字段本应该由数字组成,但出现了乱码。如下图。

现在就是要把这几十万数据中的乱码数据提取出来。

问了下度娘,他老人家告诉我用这个函数:translate

以下是这个函数的说明 :

http://www.2cto.com/database/201110/109385.html 

废话不多说开工。

1 create table temp_color_group_new as
2 select t.color_group_no,
3        translate(t.color_group_no, '9876543210', ' ') as new_no,
4        t.svc_inst_id
5   from temp_color_group t;

translate(t.color_group_no, '9876543210', ' ') as new_no

这里的color_group_no是可能出现的乱码字段,

 '9876543210':根据实际情况变更,本场景为color_group_no只可能是数字组成,如果有字母的话再加上就好。如果有汉字呢?⊙﹏⊙b汗~~没研究了,那位有高人有着告诉我一下哈。。学习学习。

' ':这里是个空格,不要定义为空''否则转换后的新号码都是null了。。也可以定义成特殊字符如“_”不过,后面转换稍麻烦点。。

创建好临时表temp_color_group_new 这个后,再将空格trim掉。

update  temp_color_group_new  set new_no = trim(new_no) ; 

此时new_no字段符合数字规则的应该都变成null了 is not null的都是乱码数据或者有特殊字符的数据如换行符等。

OK 搞定。。。 高人莫喷。。。

 

转载于:https://www.cnblogs.com/bjwzw/archive/2012/05/24/2516369.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值