如何编写SQL实现新旧账户值仅留后4位其余用*掩码?
实现字段掩码(仅保留最后4位)的SQL查询
针对你提供的表结构,要将pre_val和New_val字段做掩码处理——仅保留最后4位数字,其余部分用*替代,以下是主流数据库的具体实现方式:
MySQL/MariaDB
通过RIGHT提取末尾4位,再用LPAD填充*到原字段长度:
SELECT ACC_NO, LPAD(RIGHT(pre_val, 4), LENGTH(pre_val), '*') AS masked_pre_val, LPAD(RIGHT(New_val, 4), LENGTH(New_val), '*') AS masked_New_val FROM your_table_name;
SQL Server
用REPLICATE生成对应数量的*,再拼接提取出的末尾4位:
SELECT ACC_NO, REPLICATE('*', LEN(pre_val) - 4) + RIGHT(pre_val, 4) AS masked_pre_val, REPLICATE('*', LEN(New_val) - 4) + RIGHT(New_val, 4) AS masked_New_val FROM your_table_name;
PostgreSQL
数值类型字段需先转为文本类型,再用RIGHT和LPAD组合处理:
SELECT ACC_NO, LPAD(RIGHT(pre_val::TEXT, 4), LENGTH(pre_val::TEXT), '*') AS masked_pre_val, LPAD(RIGHT(New_val::TEXT, 4), LENGTH(New_val::TEXT), '*') AS masked_New_val FROM your_table_name;
注意事项
- 替换语句中的
your_table_name为你实际使用的表名 - 如果字段值长度不足4位,上述语句会直接返回原字段值;若需要强制补
*到固定长度,可自行调整填充逻辑
内容的提问来源于stack exchange,提问作者Zehra Khan
相关产品推荐
相关产品推荐

