【问题标题】:Replace in SQL substring issue替换 SQL 子字符串问题
【发布时间】:2012-02-15 07:45:45
【问题描述】:

我想用*替换数字中的所有数字,除了最后4位。

这是我的桌子:

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

【问题讨论】:

  • 请发布一些示例数据,以及示例之前/之后的示例,并更正有问题的语法错误。 (澄清“替换所有数字”的含义。)ty!

标签: sql sql-server-2008 replace


【解决方案1】:

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

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;

【讨论】:

    【解决方案2】:

    另一种方法是使用STUFF():

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

    以上返回:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 2015-10-11
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      • 2020-08-21
      • 2016-05-26
      相关资源
      最近更新 更多