日期:2014-05-17  浏览次数:20740 次

求助,正则替换,批量替换
本帖最后由 hwhtj 于 2013-05-15 11:21:18 编辑
有一身份证加密解密
1     B
2     A
3     @
4     G
5         F
6     E
7     D
8     K
9     J
0     C
X     +

规则如上,
我写成
加密
replace( replace(replace(replace(replace(replace(replace(replace(replace(replace(replace('sfz','1','B'),'2','A'),'3','@'),'4','G'),'5','F'),'6','E'),'7','D'),'8','K'),'9','J'),'X','+'),'0','C')

解密
replace( replace(replace(replace(replace(replace(replace(replace(replace(replace(replace('sfz','B','1'),'A','2'),'@','3'),'G','4'),'F','5'),'E','6'),'D','7'),'K','8'),'J','9'),'C','0'),'+','X')

这样太SB了,求高手改造

------解决方案--------------------
应该可以直接用translate函数:
select translate('ABCDEFGABC', 'ABCDEFGABC', '1234567123') from dual;