Oracle数据脱敏--只显示数据头部和尾部,中间的替换成星号,或者只显示数据前几个字符,后面的替换成星号--自定义函数

CREATE OR REPLACE FUNCTION fun_tm (i_string  VARCHAR2)
RETURN VARCHAR2

AS--本函数在计算有字符且有汉字的情况下,脱敏后的字符长度可能有点偏差

v_string VARCHAR2(4000);

BEGIN
  --下面是展示前面几位字符后面替换成星号的操纵
  if length(i_string) <= 4 then
    v_string :=replace(i_string,substr(i_string,-1,1),'*');
    elsif length(i_string) between 5 and 8 then
      v_string :=replace(i_string,substr(i_string,-2,2),'**');
      elsif length(i_string) >=9 then
        if length(i_string) = lengthb(i_string) then
        v_string :=substr(i_string,1,14)||replace(rpad(i_string,trunc(length(i_string)*2-14),'*'),i_string,'');
        else
          v_string :=substr(i_string,1,6)||replace(rpad(i_string,trunc(lengthb(i_string)*1.5-6),'*'),i_string,'');
          end if;
        end if;
  /*--下面是取首位各两个字符其余的替换成星号的操作
  if lengthb(i_string) != le

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值