如何使用oracle正则表达式截取字符串

假设有“中国工商银行”,‘中国农业银行’……全部以银行结尾。但是库中的值name全部为“中国工商银行××支行”等。请问如何用吧把不标准的名称全部update为标准名称?即... 假设 有“中国工商银行”,‘中国农业银行’……全部以银行结尾。 但是库中的值 name 全部为“中国工商银行××支行”等。请问如何用吧把不标准的名称 全部update为标准名称? 即把“中国工商银行××支行”改为“中国工商银行”等等 正则的话 请问怎么改 展开
 我来答
flsfycy
2015-04-16 · TA获得超过729个赞
知道小有建树答主
回答量:1002
采纳率:0%
帮助的人:712万
展开全部
以前做过,用专业的话叫做数据清洗。这样的数据往往是不同人员/在不同时间录入的。
我的思路是这样:
第一步、去掉非关键字,保留关键字。
拿“中国工商银行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;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式