您现在的位置是:亿华云 > IT科技类资讯
学一招,利用MySQL函数实现数据脱敏
亿华云2025-10-03 11:46:03【IT科技类资讯】7人已围观
简介本文转载自微信公众号「爱写Bug的麦洛」,作者麦洛。转载本文请联系爱写Bug的麦洛公众号。前言 一 什么是数据脱敏? 二 姓名脱敏小案例 2.1 定长脱敏

本文转载自微信公众号「爱写Bug的学一招麦洛」,作者麦洛。利用转载本文请联系爱写Bug的数实麦洛公众号。
前言 一 什么是现数数据脱敏? 二 姓名脱敏小案例 2.1 定长脱敏 2.2 非定长脱敏 三 函数释义前言
大家好,我是麦洛,前几天项目中用到了姓名脱敏,要保留头和尾,中间填充不定数量的*。因为不熟悉相关函数,据脱破费周折,学一招今天总结一下,利用感觉有用的数实可以收藏一下就好
一、什么是现数数据脱敏?
数据脱敏(Data Masking),顾名思义,据脱是学一招屏蔽敏感数据,对某些敏感信息(比如,利用身份证号、数实手机号、现数卡号、据脱客户姓名、客户地址、邮箱地址、薪资等等 )通过脱敏规则进行数据的变形,实现隐私数据的可靠保护。业界常见的站群服务器脱敏规则有,替换、重排、加密、截断、掩码,用户也可以根据期望的脱敏算法自定义脱敏规则。
二、姓名脱敏小案例
2.1 定长脱敏
所谓定长脱敏,就是替换的*的长度固定,效果如下图所示
SELECT CONCAT( LEFT ( real_name, 1 ), *, RIGHT ( real_name, CHAR_LENGTH( real_name )- 2 ) ) AS username FROM sys_user;2.2 非定长脱敏
所谓非定长脱敏,就是替换的*长度不定,要根据姓名实时变化;
方式一
SELECT rpad( substring(u.real_name, 1, 1), char_length(u.real_name), * ) FROM sys_user u;方式二
SELECT CONCAT( LEFT ( real_name, 1 ), repeat(*,CHAR_LENGTH( real_name )- 1)) AS username FROM sys_user;三、函数释义
在上面的例子中,我们用到了部分函数,下面一起来学习一下
CONCAT()
CONCAT()函数需要一个或多个字符串参数,并将它们连接成一个字符串。
CONCAT(string1,string2, ... );CONCAT()函数在连接之前将所有参数转换为字符串类型。如果任何参数为NULL,则CONCAT()函数返回NULL值。
mysql> SELECT CONCAT(MySQL,CONCAT); +--------------------------+ | CONCAT(MySQL,CONCAT) | +--------------------------+ | MySQLCONCAT | +--------------------------+ 1 row in set如果添加NULL值,则CONCAT函数将返回一个NULL值,如下所示:
mysql> SELECT CONCAT(MySQL,NULL,CONCAT); +-------------------------------+ | CONCAT(MySQL,NULL,CONCAT) | +-------------------------------+ | NULL | +-------------------------------+ 1 row in setLEFT()
LEFT()函数是一个字符串函数,它返回具有指定长度的字符串的左边部分。
LEFT(str,length);LEFT()函数接受两个参数:
str是要提取子字符串的源码库字符串。 length是一个正整数,指定将从左边返回的字符数。LEFT()函数返回str字符串中最左边的长度字符。如果str或length参数为NULL,则返回NULL值。
RIGHT()
该方法和left()刚好相反,用法一致,就不做赘述;
CHAR_LENGTH()
返回以字符来测量字符串str的长度。一个多字节字符算作一个字符。这意味着,对于包含五个两字节字符的字符串,那么 length() 返回10,而 CHAR_LENGTH() 返回5。
rpad()
RPAD(str,len,padstr)函数表示在字符串 str 的右侧使用 padstr 进行填充,直到长度为 len。例如:
SELECT RPAD(123, 6, 0) AS str1, RPAD(123, 2, 0) AS str1; |str1 |str1| ----+----+ |123000|12 |repeat()
返回字符串str重复count次后的字符串。如果count小于1,则返回一个空字符串。如果str或count为NULL,返回NULL。
mysql> SELECT REPEAT(MySQL, 3); +----------------------------------------------------- | MySQLMySQLMySQL +-----------------------------------------------------【编辑推荐】
iFixit拆解iPhone 13 Pro:内部结构变化 维修变得更困难 Redis源码之Hash结构的实现 数据结构与算法之最小生成树,秒懂! Python实战数据结构与算法(上) 标准库 Collections 中 4 个常用的源码下载数据结构很赞哦!(68625)
上一篇: 数据中心电缆管理基础知识
下一篇: 智能PDU的主要有哪些实用功能?