TSQL / MSSQL Select - 零填充整数

时间:2011-08-01 07:58:46

标签: sql select zerofill

我有一个SQL select语句:

select pk from items

它返回:

1
2
4
29
8
987654
12313232

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

000001
000002
000004
000029
000008
987654
12313232

他绝对希望输出最小为六位数(我认为是废话)。

我尝试过像'00000' + convert(nvarchar(6),pk)这样的事情,只有当pk只是一位数时才能正常工作。你知道怎么做吗?我应该使用条件陈述吗?

1 个答案:

答案 0 :(得分:3)

通常这个

RIGHT ('000000' + CONVERT(varchar(6), pk), 6)

但是,由于您的值超过6位数,请尝试使用

LTRIM(RIGHT ('    000000' + CONVERT(varchar(10), pk), 10))

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

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