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

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

  • 姓名长度为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

Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏的更多相关文章

  1. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  2. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. Oracle学习笔记——点滴汇总

    Oracle学习笔记——点滴汇总 http://www.botangdb.com/ Oracle GI = Grid Infrastructure = ASM + Cluster

  5. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  6. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  7. oracle学习笔记:字符串替换 replace、regexp_replace、translate函数

    1.replace 函数 语法:replace(char, search_string, replacement_string) --针对字符串替换 功能: ​ 将char中的字符串替换. ​ 当re ...

  8. CUBRID学习笔记 45 REPLACE DELETE MERGE 教程

    c#,net,cubrid,教程,学习,笔记欢迎转载 ,转载时请保留作者信息.本文版权归本人所有,如有任何问题,请与我联系wang2650@sohu.com . 过错 ------ 官方文档是英文的, ...

  9. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

随机推荐

  1. 在手机上点击input框时会放大页面

    加上  <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-s ...

  2. 基于Vue-cli 快速搭建项目

    Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...

  3. NOIP2018划水记

    // 6次NOIP里最爽的一次 去年的NOIP的游记:https://www.cnblogs.com/GXZlegend/p/7880740.html Day 0 特意请了一天假复习NOIP 实际上是 ...

  4. IDEA 修改 jdk 版本

    3步 一  file--setting 二 file--Project Structure 三 file--Project Structure

  5. 基于Python的轻量级RPC的实现

    一 什么是RPC(Remote Procedure Call)远程过程调用 二 RPC or Resful 三 重复造轮子之手撸自己的RPC(基于python语言)

  6. 51nod 1206 && hdu 1828 Picture (扫描线+离散化+线段树 矩阵周长并)

    1206 Picture  题目来源: IOI 1998 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 给出平面上的N个矩形(矩形的边平行于X轴 ...

  7. call/cc 总结 | Scheme

    call/cc 总结 | Scheme 来源 https://www.sczyh30.com/posts/Functional-Programming/call-with-current-contin ...

  8. linux运行sh文件提示 permission denied

    原因:文件没权限 解决:chmod +x 文件名 赋予执行权限或者  chmod 777 文件(赋予最高权限)

  9. 【刷题】BZOJ 2134 单选错位

    Description Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序 ...

  10. luogu2296 [NOIp2014]寻找道路 (bfs)

    反着建边,从T bfs找合法的点,然后再正着bfs一下求最短路就行了 #include<bits/stdc++.h> #define pa pair<int,int> #def ...