MySQL账号掩码实现:长度超4位的前置字符替换为X保留后4位
MySQL 账号前置掩码转换实现方案
实现逻辑
按照需求规则,掩码逻辑如下:
- 账号长度 ≤4 位:直接返回原始账号
- 账号长度 >4 位:超出4位的所有前置字符替换为
X,保留最后4位原始字符
具体实现SQL
如果你的账号存储为字符串类型(字段名为account),直接使用以下查询语句:
SELECT IF( LENGTH(account) > 4, CONCAT(LPAD('', LENGTH(account) - 4, 'X'), RIGHT(account, 4)), account ) AS masked_account FROM 替换为你的业务表名;
如果你的账号存储为数值类型,需要先转换为字符串再处理:
SELECT IF( LENGTH(CAST(account AS CHAR)) > 4, CONCAT(LPAD('', LENGTH(CAST(account AS CHAR)) - 4, 'X'), RIGHT(CAST(account AS CHAR), 4)), CAST(account AS CHAR) ) AS masked_account FROM 替换为你的业务表名;
函数说明
LENGTH():获取账号字符串的总长度LPAD('', 填充长度, 'X'):生成对应位数的X字符串,填充长度为总长度减去4,刚好对应需要替换的前置字符数量RIGHT(字符串, 4):截取账号最后4位原始字符IF(条件, 成立返回值, 不成立返回值):按规则做分支判断
效果验证
对应给出的测试用例,输出结果完全匹配需求:
| 原始账号 | 掩码后结果 |
|---|---|
| 12345664 | XXXX5664 |
| 123546 | XX3546 |
| 66662 | X6662 |
| 1111 | 1111 |
内容的提问来源于stack exchange,提问作者Hasintha Chamara
相关产品推荐
相关产品推荐

