求一函数,有关字符串替换
有表tb1存储着一些姓名,结构如下
id xm
1 ^1V6FV10V2CV6GV1KVKJV6GV1KV1C
2 ^1V6GV1KVK2V6FV26VJKV6GV1KV1C
有表tb2(密码字典)
存储着汉字与其对应加密码结构如下
key pas
张 FV10V2C
三 GV1KVKJ
丰 GV1KV1C
上 GV1KVK2
官 FV26VJK
tb1.xm字段,是按如下规则填充的
^1V6+第一个字的加密码+V6+第二个字的加密码+V6+第三个字的加密码(如果有第个字,类推)
如张三丰的加密数据为:^1V6FV10V2CV6GV1KVKJV6GV1KV1C
求一解密函数
更新tb1.xm字段,显示汉字明文
如‘^1V6FV10V2CV6GV1KVKJV6GV1KV1C’更新为‘张三丰’
‘^1V6GV1KVK2V6FV26VJKV6GV1KV1C’ 更新为’上官丰’
[解决办法]
create or replace function NG_umm(name in varchar2) return varchar2 is
Result varchar2(400);
ls_sql varchar2(4000);
v_length number := (length(name) - 2) / 9;
v_mm varchar2(4000);
m number;
begin
begin
for i in 1 .. v_length loop
/* ls_sql := 'select a.key from jm a where a.pas='''
[解决办法]
substr(regexp_replace(name, '\^1V6
[解决办法]
V6', ''), '
[解决办法]
i*7-6
[解决办法]
', 7)
[解决办法]
'''';*/
m := i * 7 - 6;
ls_sql := 'select a.key from jm a
where a.pas =substr(regexp_replace('''
[解决办法]
name
[解决办法]
''', ''\^1V6
[解决办法]
V6'', ''''), '
[解决办法]
m
[解决办法]
', 7)';
execute immediate ls_sql
into v_mm;
Result := Result
[解决办法]
v_mm;
end loop;
exception
when others then
Result := '';
end;
return(Result);
end;