求助,求一存储过程,substr,instr 有关字段解密,

瘦马 2013-05-15 09:04:33
oracle
有表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’ 更新为’上官丰’
...全文
138 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
瘦马 2013-05-16
  • 打赏
  • 举报
回复
求把这个弄成函数
瘦马 2013-05-15
  • 打赏
  • 举报
回复
我用LENGTHB(TRANSLATE替代了
u010412956 2013-05-15
  • 打赏
  • 举报
回复
引用 4 楼 hwhtj 的回复:
我知道了,我用的是oracle 10G,没有regexp_count
现在是11g时代了,得适应潮流
瘦马 2013-05-15
  • 打赏
  • 举报
回复
我知道了,我用的是oracle 10G,没有regexp_count
瘦马 2013-05-15
  • 打赏
  • 举报
回复
提示regexp_count标识符无效
瘦马 2013-05-15
  • 打赏
  • 举报
回复
declare v1 varchar2(10); v2 varchar2(10); begin for a in (select t.id, regexp_replace(t.xm, '\^1V6|V6', ',') xm from ustb t) loop for b in (select regexp_substr(a.xm, '[^,]+', 1, level) xm from dual connect by level <= regexp_count(a.xm, ',')) loop --dbms_output.put_line(b.xm); select t.key into v1 from tb2 t where t.pas = b.xm; v2 := v2 || v1; --dbms_output.put_line(v2); end loop; update tb1 set tb1.xm = v2 where tb1.id = a.id; v2 := ''; end loop; commit; end;
u010412956 2013-05-15
  • 打赏
  • 举报
回复
刚刚给你回的 解密:
declare
  v1 varchar2(10);
  v2 varchar2(10);
begin
  for a in (select t.id, regexp_replace(t.xm, '\^1V6|V6', ',') xm from tb1 t) loop
  
    for b in (select regexp_substr(a.xm, '[^,]+', 1, level) xm
                from dual
              connect by level <= regexp_count(a.xm, ',')) loop
      --dbms_output.put_line(b.xm);
      select t.key into v1 from tb2 t where t.pas = b.xm;
      v2 := v2 || v1;
      --dbms_output.put_line(v2);
    end loop;
    update tb1 set tb1.xm = v2 where tb1.id = a.id;
    v2 := '';
  end loop;
  commit;
end;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧