读书人

求1函数有关字符串替换

发布时间: 2013-06-26 14:29:32 作者: rapoo

求一函数,有关字符串替换
有表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’ 更新为’上官丰’
[解决办法]

引用:
Quote: 引用:

我开始给你写的解密代码,你说效率不行,对应成函数你是怎么改的?

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);
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)
[解决办法]
'''';
execute immediate ls_sql into v_mm;
Result:= Result
[解决办法]
v_mm;
end loop;
exception when others then Result:=''; end ; return(Result);
end ;


下面这样试下,你那个ls_sql 拼的有问题:

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;

读书人网 >oracle

热点推荐