替换SQL子字符串问题

时间:2012-01-20 19:08:13

标签: sql sql-server-2008 replace

我想用*替换数字中的所有数字,而不是最后4位。

这是我的表:

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

2 个答案:

答案 0 :(得分:2)

这样的事情会起作用......

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;

答案 1 :(得分:0)

另一种方法是使用STUFF()

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

以上回报:

---------------- 
************3456