首页 技术 正文
技术 2022年11月11日
0 收藏 421 点赞 4,304 浏览 1176 个字

信息安全考虑,有时需要对用户名称进行数据脱敏。

针对Oracle数据库,进行取数数据脱敏处理

脱敏规则:

长度小于9个字符,只保留前3个汉字与后3个汉字,中间全部由*填充。

长度9个字及以上及奇数,隐去中间3个字;长度10个字及以上及奇数,隐去中间4个字。

例如:

公司名称:宇宙无敌厉害的超级大公司的杭州分公司

字段长度:18

脱敏后:宇宙无敌厉害的****司的杭州分公司

可实现的正确答案:

select
t.no, ---公司编号
case when length(t.name)<=8 then substr(t.name,1,3)||substr('**',1,length(t.name)-6)|| substr(t.name,-3,3) -------公司名称长度绝对大于6,一般都在6以上
else substr(t.name,1,round(length(t.name)/2,0)-2)||substr('****',1,4-mod(length(t.name),2))||substr(t.name,-(round(length(t.name)/2,0)-2),round(length(t.name)/2,0)-2) end ) -----脱敏后公司名
from aaa t;

说明:

substr(t.name,1,3)      公司名称前三个字

substr(t.name,-3,3)     公司名称后三个字

round(length(t.name)/2,0)-2   计算公司名称 * 前一部分的长度

substr(‘****’,1,4-mod(length(t.name),2))   单数3个*  双数4个*

oracle 中使用substr函数对中文进行识别,可以一个汉字一个汉字的识别。

输入:

substr(’宇宙无敌厉害的超级大公司的杭州分公司’,1,3)

输出:

宇宙无

弯路:

中间尝试使用rpad(或者lpad)函数。

发现该函数对中文字段长度识别有很大的问题。

 rpad('宇宙无敌',10,'*')

理论上,字符串长度为10,“宇宙无敌”长度为4,输出结果应该为:宇宙无敌******

实际上,Oracle读取“宇宙无敌”长度为8,输出结果为:宇宙无敌**

具体情况参考:https://www.cnblogs.com/objectorl/p/rpad-length-issue-in-multibyte-encoding.html

Lpad Function:在PL/SQL中用于往源字符串的左侧填充一些字符。

函数参数:lpad( string1, padded_length, [ pad_string ] )

其中

string1:源字符串

padded_length:最终返回的字符串的长度,如果最终返回的字符串的长度比源字符串的小,那么此函数实际上对源串进行截断处理

pad_string:用于填充的字符,可以不填,默认为空字符

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902