Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏

摘要:
替换为姓氏+*;将中间字符替换为*;将第三个字符替换为*;然后replace从dual中选择replace(“陈洪红”,“*”)作为名称;1) ||'*'||substr('Chen Honghong'。3。使用regexp_replace精确替换selectregexp_replace('Chen Honghong'。regexp_relace支持使用正则表达式替换字符串。

  在数据库中难免会遇到需要对数据进行脱敏的操作,无论是姓名,还是身份证号。

  最近遇到一个需求,需要对姓名进行脱敏:

  • 姓名长度为2,替换为姓+*;
  • 姓名长度为3,替换中间字符为*;
  • 姓名长度为4,替换第3个字符为*;

  经过一番搜索之后,最终找到了3种方式的实现,具体如下。

一、先查找,再替换

select replace('陈宏宏',substr('陈宏宏',2,1),'*') as name from dual;

Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏第1张

注意:此种方法通过对第2个字符进行替换,如果名字为叠名,则会发生上述误替换情况;

二、拼接

select substr('陈宏宏',1,1)||'*'||substr('陈宏宏',3,1) as name from dual;

Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏第2张

三、使用regexp_replace进行精准替换

select regexp_replace('陈宏宏','(.)','*',2,1) as name from dual;

注意:regexp_replace支持使用正则表达式对字符串进行替换,该语句解释为从第2个字符开始,取任意1个字符,替换为*;

四、完整的替换代码 

create table temp_cwh_002 as
select a.acc_nbr,
       a.act_city,
       a.city_name,a.number1,
       a.number2,
       case when length(a.cust_name) = 2 then regexp_replace(cust_name,'(.)','*',2,1)
            when length(a.cust_name) = 3 then regexp_replace(cust_name,'(.)','*',2,1)
            when length(a.cust_name) = 4 then regexp_replace(cust_name,'(.)','*',3,1)
       else cust_name end cust_name,
       a.acc_nbr2,
       a.param_value
from temp_cwh_001 a
where length(a.cust_name) <= 4

END 2019-01-02 16:44:13 

免责声明:文章转载自《Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django学习系列之django restframeworkwin32- GetMessage的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Halcon 学习笔记--数组操作和文件(4)

一、数组操作       对数组可以完成整体赋值,区域赋值,数组之间赋值,某个元素赋值(这个很类似Matlab)         count_seconds(T1) Htuple1 := [1,2,3,4,5,6] Htuple3 := sin(Htuple1) *数组元素修改 Htuple1[2] := 'ABC' *数组区域修改 Htuple1[1...

[开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

[DotnetSpider 系列目录] 一、初衷与架构设计 二、基本使用 三、配置式爬虫 四、JSON数据解析与配置系统 五、如何做全站采集 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JAVA、PYTHON,甚至于还有NODEJS,C++;再或者去开源中国查询C#的爬虫项目,仅有几个非常简单或是几年没有更新的项目。 而单...

表与表之间建关系(约束)

目录 约束条件default默认值 unique唯一 primary key主键 auto_increment自增 表与表之间建关系 外键 表关系 一对多关系 多对多 一对一 修改表(了解) 复制表(了解) 约束条件 default默认值 # 补充知识点 插入数据的时候可以指定字段 create table t1( id int,...

es6 Number 的数值操作

1、isNaN()   如果是一个数,则返回false, 否则返回true   注意:Number.isNaN返回结果为false时,不一定代表该值定是数字,字符串也可以返回false       //isNaN console.log(isNaN(2.5))//false console.log(window.isNaN(2.5))//f...

Django实战(二)之模板语言

该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语法在我看来与vue.js倒有一些相似处 ,比如它们的模板语法中参数为{{parm}}。 本篇所用到的例子,仍然基于实战(一) 在HelloWorld(该文件夹...

Python全栈开发:list、元祖常用方法操作

列表[] 索引与切片#例题#li = ['yijiajun',[1,3,5,7,9],'zhangliang','zhaoritian','sunwukong']# #例子1 找出列表中索引为0的元素# l1 = li[0]# print(l1)# 结果输出:# yijiajun# #例子2 找出列表中索引为1的元素# l2 = li[1]# prin...