程序员人生 网站导航

清洗字典数据把“A1B1C1”翻译成对应中文字段

栏目:数据库应用时间:2016-04-08 08:57:42

【背景】
某部委项目,获得到某收集端某类数据,需配合开发完成数据的抽取、清洗工作。其中有1类字典类字段,由于收集端数据问题,对字典类的数据内容出现大量问题数据需要清洗,把字典值翻译成中文名称提供给开发使用,举个例子以下:
这里写图片描述
假定字典列表以下:
这里写图片描述
遇到问题1:如何进行翻译?
把A1翻译成“消防车”,把B1翻译成“警车”,把C1翻译成“大货车”。

遇到问题2:如何将翻译后结果更美观易读?
将翻译后结果由“消防车,警车,大货车,”转换成“消防车,警车,大货车”,即去掉翻译后的最后1个逗号。

【解决】
解决1:利用笨方法:replace翻译;
由于本次需翻译字典项不多,斟酌到编写函数的繁琐性,因而想利用1个replace的笨方法来解决,起初担心效力问题,但实践后发现用replace套了19层后,转换效力上还可以接受。

解决2:利用substr和instr函数;
由于利用replace简单翻译时,加入了逗号进行种别间的分割,这样将在最后出现1个过剩的逗号。需要利用instr查询出最后1个逗号所在的位数,然后再利用substr截取到倒数第2位便可。
弊端:
如果不写函数的话,实现问题1和问题2时,将发起两次replace转换,本钱变成了2倍。所以建议利用函数,把replace后的结果作为变量进行传递,减少本钱消耗。

【实验】
步骤1:
select replace(replace(‘A1B1’,’A1’,’消防车,’),’B1’,’警车,’) from dual;
这里写图片描述
select replace(replace(‘B1A1’,’A1’,’消防车,’),’B1’,’警车,’) from dual;
这里写图片描述
步骤2:
select substr(‘消防车,警车,’,1,instr(‘消防车,警车,’,’,’,⑴)⑴) from dual;
这里写图片描述
select substr(‘警车,消防车,’,1,instr(‘警车,消防车,’,’,’,⑴)⑴) from dual;
这里写图片描述
结合步骤1和步骤2:

select substr(replace(replace(‘A1B1’,’A1’,’消防车,’),’B1’,’警车,’),1,instr(replace(replace(‘A1B1’,’A1’,’消防车,’),’B1’,’警车,’),’,’,⑴)⑴) from dual;
这里写图片描述
select substr(replace(replace(‘B1A1’,’A1’,’消防车,’),’B1’,’警车,’),1,instr(replace(replace(‘B1A1’,’A1’,’消防车,’),’B1’,’警车,’),’,’,⑴)⑴) from dual;
这里写图片描述

小知识,简而记之。

蓝的成长记系列_20151022

原创作品,出自 “深蓝的blog” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/huangyanlong)。

蓝的成长记――追逐DBA(1):奔走于路上,挺进山东

蓝的成长记――追逐DBA(2):安装!安装!久背的记忆,引发我对DBA的重新认知

蓝的成长记――追逐DBA(3):古董上操作,数据导入导出成了问题

蓝的成长记――追逐DBA(4):追思少年情愁,再探oracle安装

蓝的成长记――追逐DBA(5):不谈技术谈业务,恼人的利用系统

蓝的成长记――追逐DBA(6):做事与做人:小技术,大为人

蓝的成长记――追逐DBA(7):基础命令,地基之石

蓝的成长记――追逐DBA(8):重拾SP报告,回想oracle的STATSPACK实验

蓝的成长记――追逐DBA(9):国庆渐去,追逐DBA,新计划,新出发

蓝的成长记――追逐DBA(10):飞刀防身,熟络而非专长:玩弄中间件Websphere

蓝的成长记――追逐DBA(11):回家后的安逸,晕晕乎乎醒了过来

蓝的成长记――追逐DBA(12):7天7收获的SQL

蓝的成长记――追逐DBA(13):调和硬件厂商,6个故事:所见所感的“服务器、存储、交换机……”

蓝的成长记――追逐DBA(14):难忘的“云”端,起步的hadoop部署

蓝的成长记――追逐DBA(15):以为FTP很“简单”,谁成想1波3折

蓝的成长记――追逐DBA(16):DBA也饮酒,被捭阖了

蓝的成长记――追逐DBA(17):是分享,还是消费,在后IOE时期学会成长

蓝的成长记――追逐DBA(18):小机上WAS集群故障,由1次更换IP引发

蓝的成长记――追逐DBA(19):路上的插曲:触碰“框架”与“软件系统”

蓝的成长记――追逐DBA(20):何故缘起,建库护航

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐