如何使用oracle正则表达式截取字符串
假设有“中国工商银行”,‘中国农业银行’……全部以银行结尾。但是库中的值name全部为“中国工商银行××支行”等。请问如何用吧把不标准的名称全部update为标准名称?即...
假设 有“中国工商银行”,‘中国农业银行’……全部以银行结尾。 但是库中的值 name 全部为“中国工商银行××支行”等。请问如何用吧把不标准的名称 全部update为标准名称? 即把“中国工商银行××支行”改为“中国工商银行”等等 正则的话 请问怎么改
展开
1个回答
展开全部
以前做过,用专业的话叫做数据清洗。这样的数据往往是不同人员/在不同时间录入的。
我的思路是这样:
第一步、去掉非关键字,保留关键字。
拿“中国工商银行xxx支行”来说录入的名称可能存在很多情况比如“工商银行xxx支行”/“工行xxx支行”等,
针对这些情况我们要排除非关键字对数据的干扰,以”中国“开始的去掉”中国“二字,以”支行“结尾的去掉”支行“二字。
第二步、同义词转换。比如”工商银行“=”工行“,”农业银行“=”农行“等。
第三步、数据标准化。将不标准的名称更改成标准的名称。
在清洗过程中,可以一边做一边,使用group by语句统计名称的个数,观察数据。
这个是一个体力活,其中还可能存在错别字等情况,反正很烦。
我的思路是这样:
第一步、去掉非关键字,保留关键字。
拿“中国工商银行xxx支行”来说录入的名称可能存在很多情况比如“工商银行xxx支行”/“工行xxx支行”等,
针对这些情况我们要排除非关键字对数据的干扰,以”中国“开始的去掉”中国“二字,以”支行“结尾的去掉”支行“二字。
第二步、同义词转换。比如”工商银行“=”工行“,”农业银行“=”农行“等。
第三步、数据标准化。将不标准的名称更改成标准的名称。
在清洗过程中,可以一边做一边,使用group by语句统计名称的个数,观察数据。
这个是一个体力活,其中还可能存在错别字等情况,反正很烦。
追问
我问的就是具体的……比如“中国工商银行漕溪路支行”……比如用regexp_substr 怎么select 成 中国工商银行……
追答
不需要正则这么复杂吧,用substr就可以了
防止出错,先查询:
select name,substr(name,1,6) from table where substr(name,1,6) = '中国工商银行';
更新语句:
update table set name = substr(name,1,6) where substr(name,1,6) = '中国工商银行' and name != '中国工商银行';
--commit;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询