TSQL/MSSQL Select - 零填充整数

dpp*_*dpp 2 sql select zerofill

我有一个 SQL 选择语句:

select pk from items
Run Code Online (Sandbox Code Playgroud)

它返回:

1
2
4
29
8
987654
12313232
Run Code Online (Sandbox Code Playgroud)

现在我的老板想要这样的东西:

000001
000002
000004
000029
000008
987654
12313232
Run Code Online (Sandbox Code Playgroud)

他肯定希望输出至少为六位数(我认为这是无稽之谈)。

我尝试过做类似的事情,只有当只有一位数字时才'00000' + convert(nvarchar(6),pk)可以正常工作。pk您知道如何做到这一点吗?我应该使用条件语句吗?

gbn*_*gbn 5

通常这个

RIGHT ('000000' + CONVERT(varchar(6), pk), 6)
Run Code Online (Sandbox Code Playgroud)

但由于您的值超过 6 位,请尝试此操作

LTRIM(RIGHT ('    000000' + CONVERT(varchar(10), pk), 10))
Run Code Online (Sandbox Code Playgroud)

但是你需要一个 CASE 来处理 7-9 位长的数字:。

CASE
    WHEN pk >= 1000000 THEN CONVERT(varchar(10), pk)
    ELSE RIGHT ('000000' + CONVERT(varchar(6), pk), 6)
END
Run Code Online (Sandbox Code Playgroud)