Маскирование некоторой части строки справа с помощью XXXX с использованием SQL - PullRequest
0 голосов
/ 24 марта 2019

Я хочу замаскировать некоторую часть строки, используя SQL, например, если строка

'example test 156425648'

Я просто хочу замаскировать первые 5 символов числа справа от, т.е.

'example test XXXXX5648'

маскирование всегда будет справа.

Я хотел, чтобы эта маска была сделана в самом запросе выбора, кто-то, пожалуйста, помогите мне с запросом для него.

Ответы [ 2 ]

3 голосов
/ 24 марта 2019

В 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);

Судя по формулировке вопроса, у меня нет оснований полагать, что число находится в фиксированной позиции.

2 голосов
/ 24 марта 2019

В соответствии с вашими требованиями, номер всегда будет иметь длину 9 цифр и в конце строки:

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

даст:

example test XXXXX5648

См. демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...