如何在SQL Server中对姓名列除首字母外替换为*
SQL Server 姓名掩码实现方案
直接给你修改后的SQL代码,可实现将姓名除首字母外的所有字符替换为*的需求:
SELECT [Personal info], -- 处理名:首字母 + 对应长度的* SUBSTRING([Primary Contact], 1, 1) + REPLICATE('*', LEN(SUBSTRING([Primary Contact], 1, CHARINDEX(' ', [Primary Contact]) - 1)) - 1) + ' ' + -- 处理姓:首字母 + 对应长度的* SUBSTRING([Primary Contact], CHARINDEX(' ', [Primary Contact]) + 1, 1) + REPLICATE('*', LEN(SUBSTRING([Primary Contact], CHARINDEX(' ', [Primary Contact]) + 1, LEN([Primary Contact]))) - 1) AS CI FROM xx
代码说明
- 拆分姓名:通过
CHARINDEX(' ', [Primary Contact])定位姓名中间的空格,将姓名拆成名、姓两部分 - 生成掩码:用
REPLICATE('*', 长度-1)生成与剩余字符数匹配的*,比如名是John(长度4),就生成3个* - 拼接结果:将首字母和掩码拼接,再用空格连接姓的首字母与掩码
效果验证
- 输入
John Snow→ 输出J*** S*** - 输入
Jonathan Conan→ 输出J******* C****
如果姓名存在首尾空格,可在处理前添加LTRIM(RTRIM([Primary Contact]))清理空格,避免计算错误。
内容的提问来源于stack exchange,提问作者Javid Hesenov
相关产品推荐
相关产品推荐

