使用SQL使用XXXX从右侧屏蔽字符串的某些部分

时间:2019-03-24 13:02:18

标签: sql sql-server

我想使用SQL屏蔽字符串的某些部分,例如,如果字符串是

'example test 156425648'

我只想从右到右屏蔽数字的前5个字符

'example test XXXXX5648'

遮罩永远是从右开始的。

我希望在选择查询本身中完成此掩码,请有人帮我进行查询。

2 个答案:

答案 0 :(得分:3)

在SQL Server中,将stuff()函数与patindex()replicate()结合使用:

select stuff(str, patindex('%[0-9]%', str), 5, replicate('X', 5))
from (values ('example test 156425648')) v(str);

如果您知道数字在字符串的末尾,则仍然可以使用stuff()

select stuff(str, len(str) - 8, 5, replicate('X', 5))
from (values ('example test 156425648')) v(str);

从问题的表达方式来看,我没有理由认为数字是固定的。

答案 1 :(得分:2)

根据您的要求,该数字将始终为9位数字,并在字符串的末尾:

declare @value varchar(100) = 'example test 156425648';
select left(@value, len(@value) - 9) + 'XXXXX' + right(@value, 4)

将给出:

example test XXXXX5648

请参见demo