在SQL列中添加零

在SQL列中添加零,sql,sql-server,Sql,Sql Server,如何将0添加到SQL列以匹配9位数字?我们有一个包含产品ID的列名SystemID。我们的CRM系统会自动删除零,但有时我们需要删除这些数字并粘贴到Excel,它需要包含所有数字。是这样的: ID1111111 ID111111 ID11111 如何在6位数后添加零 If ID111111 then ID1111011 If ID22222 then ID2222002 If ID3333 then ID3333000 您可以使用填充和子字符串的组合来获得所需的输出: SELECT L

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

ID1111111
ID111111
ID11111
如何在6位数后添加零

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

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

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

您的描述并不完全清楚,但您可能正在寻找:

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处剪切。

添加零后的ID看起来与原始ID不同。你能解释一下这里发生了什么吗?ID总是9位,但我们的软件会自动删除零,但我需要在运行select时再次添加这些零,所以我需要在6之后添加零,所以:如果ID1111是ID111001,如果ID22222是ID222202,那么可能这就是你要找的:-)你的示例数据非常不清楚。你能澄清一下你的问题吗,这样我们就不必继续猜测了?但我需要在6位数后加上0,使之成为9。所以如果SystemID是ID11111(7位),我需要在6后面加零,所以ID1111001,如果SystemID是8位,所以我需要ID2222202@DavidJackowiak我给了你一个查询,它适用于你上面评论中的例子。但对一般情况不太清楚。
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