【问题标题】:Add zeros in SQL columns在 SQL 列中添加零
【发布时间】:2017-02-14 07:31:44
【问题描述】:

如何在 SQL 列中添加零以匹配 9 位数字?我们有一个包含产品 ID 的列名 SystemID。我们的 CRM 系统会自动删除零,但有时我们需要取出这些数字并粘贴到 Excel 中,它需要包含所有数字。是这样的:

ID1111111
ID111111
ID11111

如何在 6 位数字后添加零?

If ID111111 then ID1111011
If ID22222  then ID2222002
If ID3333   then ID3333000

【问题讨论】:

  • 加零后的ID看起来不像原来的ID。你能解释一下这里发生了什么吗?
  • ID 始终为 9 位,但我们的软件会自动删除零,但我需要在运行 select 时再次添加这些零,所以我需要在 6 之后添加零:如果 ID1111 则为 ID111001,如果 ID222222 则为 ID2222202
  • 您的样本数据非常不清楚。能否请您清理一下您的问题,这样我们就不必继续猜测了?

标签: sql sql-server


【解决方案1】:

您的描述不是很清楚,但可能就是您要查找的内容:

DECLARE @Dummy TABLE(YourID VARCHAR(100));
INSERT INTO @Dummy VALUES('ID111111 '),('ID22222'),('ID3333')      

SELECT LEFT(STUFF(YourID + REPLICATE('0',9),7,0,REPLICATE('0',9-LEN(YourID))),9)
FROM @Dummy

结果

ID1111011
ID2222002
ID3333000

简短说明

首先我添加 9 个零以确保原始字符串在任何情况下都有 9 个数字。然后我使用STUFF 在第 7 位引入适当数量的零。最后的字符串在 9 处被截断。

【讨论】:

    【解决方案2】:
    DECLARE @Test TABLE(YourID VARCHAR(100));
    INSERT INTO @Test VALUES('ID111111'),('ID22222'),('ID3333'),('ID'),('ID1234567')
    
    SELECT LEFT(YourID, 6) + REPLICATE('0', 9 - LEN(YourID)) + SUBSTRING(YourID, 7, LEN(YourID))
    
    FROM @Test
    

    【讨论】:

      【解决方案3】:

      您可以使用填充和子字符串的组合来获得您想要的输出:

      SELECT LEFT(SUBSTRING(SystemID, 1, 6) + '000', 15 - LEN(SystemID)) +
                 SUBSTRING(SystemID, 7, LEN(SystemID) AS SystemIDPadded
      FROM yourTable
      

      【讨论】:

      • 但我需要在 6 位数字后添加零为 9。因此,如果 SystemID 是 ID11111(7 位数字),我需要在 6 之后添加零,所以 ID1111001,如果 systemID 是 8 位数字,我需要 ID2222202跨度>
      • @DavidJackowiak 我给了您一个查询,该查询适用于您上面评论中的示例。不过不确定一般情况。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2014-12-15
      相关资源
      最近更新 更多