Mysql实现数据脱敏
一、数据脱敏解释
在日常开发需求中会经常遇到数据脱敏处理,比如身份证号、手机号,需要使用*进行部分替换显示。这样能使敏感隐私信息在一定程度上得到保护。那么什么是数据脱敏呢?
在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。
二、数据脱敏实现
数据脱敏实现可以从数据库查数据的时候进行处理,可以在查出数据后进行处理。在这里记录了MySQL数据库查询时处理,通过使用mysql字符串函数实现。
三、SQL数据脱敏实现
CONCAT()、LEFT()和RIGHT()字符串函数组合使用,请看下面具体实现
CONCAT(str1,str2,…):返回结果为连接参数产生的字符串
LEFT(str,len):返回从字符串str 开始的len 最左字符
RIGHT(str,len):从字符串str 开始,返回最右len 字符
电话号码及金钱脱敏sql:
SELECT concat(left(customer_user_phone,3),’********’)) AS customer_user_phone
(SELECT concat(left(money,0),’****’)) AS money
SELECT
(SELECT
concat(
left(customer_user_phone,
3),
'********')) AS customer_user_phone,
(SELECT
concat(left(money,
0),
'****')) AS money
FROM
os_order_form
WHERE
create_user != 3
AND order_owner_id != 3
AND del_flag = 0
AND tenant_id = 2
ORDER BY
create_time DESC LIMIT 5;
查询的结果
以上例子是针对业务需要来实现的,如果需要保留前后数字,只把中间4位电话脱敏,那写法又不一样,如下
SELECT
(SELECT
concat(
left(customer_user_phone,
3),
'****', right(customer_user_phone, 4))) AS customer_user_phone,
(SELECT
concat(left(money,
0),
'****')) AS money
FROM
os_order_form
WHERE
create_user != 3
AND order_owner_id != 3
AND del_flag = 0
AND tenant_id = 2
ORDER BY
create_time DESC LIMIT 5;
查询结果: