我想用*
替换数字中的所有数字,而不是最后4位。
这是我的表:
Person
-----------
PersonID PersonBadgeNumber numeric(16,0)
答案 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