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

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

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

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

一、先查找,再替换

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

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

二、拼接

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

三、使用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

转载于:https://www.cnblogs.com/hider/p/10209321.html

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

  1. 在大量数据迁移期间oracle学习笔记

    在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...

  2. Oracle学习笔记 字符集概述

    Oracle 学习笔记 字符集概述 这节课开始讲oracle里面的字符集 偏重于原理和简单的一些判断以及实现 字符集它涉及到很多的东西 比如建库和操作系统环境 这节课把字符集的原理性的东西以及常见的操 ...

  3. oracle update单引号,Oracle学习笔记:update的字段中包括单引号

    平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...

  4. oracle学习笔记 参数文件及数据库的启动和关闭

    oracle学习笔记 参数文件及数据库的启动和关闭 我们这节课把oracle的参数文件以及oracle的启动关闭讲一下 一)参数文件作用 先看oracle的参数文件 它由来已久了 我们知道oracle ...

  5. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  6. oracle:oracle学习笔记(四)循环、光标、异常、瀑布模型

    oracle学习笔记:循环.光标.异常 文章目录 打印Hello World 定义基本变量 引用型变量(单行)` my_name emp.ename%type ` 记录型变量(多行) `emp_rec ...

  7. Oracle学习笔记---(一)

    Oracle学习笔记---(一) 一 1.Oracle简介     Oracle是以高级结构化查询语言(SQL)为基础的大型关系数据库:是一个对象关系数据库管理系统(ORDBMS).它提供了关系数据库 ...

  8. oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网

    oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...

  9. 【Oracle】Oracle学习笔记

    [Oracle]Oracle学习笔记 目录 [Oracle]Oracle学习笔记 P1.Oracle数据库的安装和配置 P2.Oracle数据库管理 P3-0.初步SQL P3-1.基本SQL SEL ...

  10. oracle学习笔记 Oracle体系结构概述

    oracle学习笔记 Oracle体系结构概述 从这节开始,开始讲oracle数据库体系结构. 首先从总体上,从概述上把oracle整体的体系结构讲一下, 然后接下来的时间我们会一块一块的将oracl ...

最新文章

  1. php pdo 时间,php – 使用PDO执行时间记录查询 – 自动完成功能无效
  2. matlab画CDF曲线
  3. 堪比Focal Loss!解决目标检测中样本不平衡的无采样方法
  4. CentOS 命令【备忘】
  5. mysql 网站 数据库_mysql系统数据库
  6. 【UOJ188】 Sanrd【类min_25筛】
  7. Java EE调度程序
  8. window.location和window.open的区别
  9. centos 6.7 mysql 5.6_CentOS 6.7 安装 MySQL 5.6 思路整理
  10. 51NOD-1090-3个数和为0
  11. 数据库中的年月日表达
  12. Mutual Review
  13. 您有一份Microsoft Office 365技能宝典等待签收
  14. MNIST数据集格式ubyte转png
  15. VS实现格式化代码及代码缩进
  16. 超图openlayers
  17. 有限域的Lagrange插值分析ZUC流密码S盒的代数结构
  18. java opennlp_java-使用openNLP maxent的训练模型
  19. 如何在手机查看电脑html
  20. S9013驱动直流电机原理图

热门文章

  1. Storm学习(一)Storm介绍
  2. TWAIN和WIA之间有什么相似/不同之处?
  3. 上海户口申请条件类比分析
  4. j90度度复数运算_旋转,复数最直观的理解
  5. 2022电工(初级)考试试题及答案
  6. 联想服务器改为win7系统,联想电脑怎么把Win10系统改为win7系统?
  7. 浙江大学 PTA 递归实现顺序输出整数
  8. dsp的ad标志位是什么_关于STM32 AD转换的ADC_FLAG_EOC标志位问题
  9. MySQL基本优化方案
  10. 语言模型 Probability Based: Language Model