如何在MySQL中实现数据脱敏显示使用REPLACE与SUBSTR函数

来源:建站作者:会飞的猪头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在MySQL中实现数据脱敏显示使用REPLACE与SUBSTR函数》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在MySQL中实现数据脱敏显示使用REPLACE与SUBSTR函数》有用,将其分享出去将是对创作者最好的鼓励。

在业务系统中,用户手机号、身份证号、银行卡号等敏感信息如果直接明文展示,会带来极大的隐私泄露风险,因此需要在查询展示时对这类数据进行脱敏处理。MySQL的SUBSTR函数可以截取字符串的指定部分,REPLACE函数可以替换字符串中的指定内容,两者结合就能实现灵活的数据脱敏效果。

如何在MySQL中实现数据脱敏显示使用REPLACE与SUBSTR函数

相关函数基础用法

SUBSTR函数

SUBSTR函数用于截取字符串的指定部分,语法格式如下:

-- 语法:SUBSTR(str, pos, len)
-- str:要截取的原始字符串
-- pos:起始位置,1表示字符串第一个字符
-- len:要截取的长度,可选,不填则截取到字符串末尾
SELECT SUBSTR('13812345678', 1, 3); -- 结果为138
SELECT SUBSTR('13812345678', 8); -- 结果为5678

REPLACE函数

REPLACE函数用于替换字符串中的指定子串,语法格式如下:

-- 语法:REPLACE(str, from_str, to_str)
-- str:原始字符串
-- from_str:要被替换的子串
-- to_str:替换后的新子串
SELECT REPLACE('13812345678', '1234', '****'); -- 结果为138****5678

常见脱敏场景实现

手机号脱敏

手机号通常保留前3位和后4位,中间4位替换为星号,实现代码如下:

-- 假设user表有phone字段存储手机号
SELECT 
    phone AS 原始手机号,
    CONCAT(
        SUBSTR(phone, 1, 3),
        '****',
        SUBSTR(phone, 8)
    ) AS 脱敏手机号
FROM user;

执行后结果如下:

原始手机号脱敏手机号
13812345678138****5678
15987654321159****4321

身份证号脱敏

身份证号保留前6位和后4位,中间部分替换为星号,实现代码如下:

-- 假设user表有id_card字段存储身份证号
SELECT 
    id_card AS 原始身份证号,
    CONCAT(
        SUBSTR(id_card, 1, 6),
        '********',
        SUBSTR(id_card, 15)
    ) AS 脱敏身份证号
FROM user;

邮箱脱敏

邮箱保留前缀前2位和后缀域名,中间部分替换为星号,实现代码如下:

-- 假设user表有email字段存储邮箱
SELECT 
    email AS 原始邮箱,
    CONCAT(
        SUBSTR(SUBSTR(email, 1, INSTR(email, '@') - 1), 1, 2),
        '****',
        SUBSTR(email, INSTR(email, '@'))
    ) AS 脱敏邮箱
FROM user;

注意事项

  • 脱敏操作仅建议在查询展示时使用,不要直接更新原表数据,避免原始数据丢失。
  • 如果字段值长度不固定,需要先判断长度再处理,避免截取超出范围导致结果异常。
  • 对于特殊格式的敏感数据,可以先拆分再组合,灵活调整脱敏规则。

MySQL数据脱敏REPLACE函数SUBSTR函数修改时间:2026-07-06 13:51:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。