导读:本期聚焦于小伙伴创作的《如何利用SQL批量更新敏感数据为脱敏状态 使用MASK函数或字符串截断》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何利用SQL批量更新敏感数据为脱敏状态 使用MASK函数或字符串截断》有用,将其分享出去将是对创作者最好的鼓励。

在业务系统运行过程中,数据库中存储的用户手机号、身份证号、银行卡号等敏感信息,需要按照数据安全规范进行脱敏处理,避免敏感数据在查询、传输过程中泄露。通过SQL语句批量更新敏感数据为脱敏状态,是高效完成脱敏任务的常用方式,既可以借助数据库内置的MASK函数实现,也可以通过字符串截断拼接的方式完成,适配不同的数据库环境和脱敏需求。

如何利用SQL批量更新敏感数据为脱敏状态 使用MASK函数或字符串截断

一、使用MASK函数实现批量脱敏更新

部分数据库(如MySQL 8.0+、SQL Server 2016+)内置了数据脱敏相关的MASK函数,可以直接调用函数完成敏感字段的脱敏处理,操作逻辑更简洁。

1. MySQL中的MASK函数应用

MySQL的MASK函数可以对指定字段按照规则进行脱敏,常见的用法是保留字段前后指定位数的字符,中间部分用星号替换。

以下示例是对用户表的手机号字段进行脱敏,保留前3位和后4位,中间4位替换为星号:

-- 批量更新用户表手机号字段为脱敏状态
UPDATE user_info 
SET phone = MASK(phone, 3, 4, '*')
WHERE phone IS NOT NULL;

上述语句中,MASK函数的第一个参数是需要脱敏的字段,第二个参数是保留的前缀长度,第三个参数是保留的后缀长度,第四个参数是替换中间部分的字符。

2. SQL Server中的动态数据掩码应用

SQL Server通过动态数据掩码功能实现脱敏,需要先为字段添加掩码规则,再执行更新操作。

以下示例是为用户表的身份证号字段添加掩码规则,保留前1位和后2位,中间部分替换为星号:

-- 为身份证号字段添加动态掩码
ALTER TABLE user_info
ALTER COLUMN id_card ADD MASKED WITH (FUNCTION = 'partial(1, "********", 2)');

-- 批量更新身份证号字段为脱敏状态
UPDATE user_info 
SET id_card = id_card
WHERE id_card IS NOT NULL;

二、使用字符串截断实现批量脱敏更新

如果数据库没有内置的MASK函数,可以通过字符串截取函数拼接的方式实现脱敏,适配所有支持基础字符串函数的SQL环境。

1. 手机号脱敏示例

手机号长度为11位,通常保留前3位和后4位,中间4位替换为星号,实现逻辑是先截取前3位,再拼接4个星号,最后拼接后4位。

-- 批量更新手机号字段为脱敏状态
UPDATE user_info 
SET phone = CONCAT(
    SUBSTRING(phone, 1, 3), 
    '****', 
    SUBSTRING(phone, 8, 4)
)
WHERE phone IS NOT NULL AND LENGTH(phone) = 11;

2. 邮箱脱敏示例

邮箱脱敏通常保留@符号前的第一个字符和@符号及后面的域名部分,中间部分替换为星号。

-- 批量更新邮箱字段为脱敏状态
UPDATE user_info 
SET email = CONCAT(
    SUBSTRING(email, 1, 1), 
    '****', 
    SUBSTRING(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1)
)
WHERE email IS NOT NULL AND email LIKE '%@%';

三、批量更新脱敏的注意事项

  • 更新前先备份数据,避免脱敏规则错误导致数据无法恢复。
  • 先通过SELECT语句验证脱敏逻辑的正确性,再执行UPDATE操作。
  • 对于大表批量更新,建议分批次执行,避免锁表时间过长影响业务运行。
  • 脱敏后的数据需要符合业务查询需求,比如部分业务需要保留后4位用于用户身份核验,需要调整保留位数。

通过以上两种方式,都可以高效完成SQL批量更新敏感数据为脱敏状态的操作,开发者可以根据自身使用的数据库类型和脱敏需求选择合适的方法。

SQL数据脱敏MASK函数字符串截断修改时间:2026-07-13 04:30:18

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