Заменить в вопросе подстроки SQL - PullRequest
0 голосов
/ 20 января 2012

Я хотел бы заменить все цифры в числе на *, кроме последних 4.

Вот моя таблица:

Person
-----------
PersonID PersonBadgeNumber numeric(16,0)

Ответы [ 2 ]

2 голосов
/ 20 января 2012

Примерно так будет работать ...

DECLARE @badgeId Numeric(16, 0) = 1238985495;
SELECT
  REPLICATE('*', LEN(@badgeId) - 4) +
  RIGHT(@badgeId, 4);
-- Produces: ******5495

Чтобы использовать его в запросе, сделайте следующее:

SELECT
  REPLICATE('*', LEN(PersonBadgeNumber) - 4) +
  RIGHT(PersonBadgeNumber, 4) RedactedBadgeNumber
FROM Person;
0 голосов
/ 21 января 2012

Другой метод заключается в использовании STUFF():

DECLARE @n numeric (16, 0);
SET @n = 1234567890123456;
SELECT STUFF(@n, 1, LEN(@n) - 4, REPLICATE('*', LEN(@n) - 4))

Вышеуказанное возвращает:

---------------- 
************3456 
...