1

我有以下情况:

DECLARE @m VARCHAR(50) = '000000001'

WHILE (@m <= 10)
BEGIN
        PRINT @m
        -- Increment the iterator
        SET @m = @m  + 1
END

当我运行上面的代码时,我得到:

000000001
2
3
4
5
6
7
8
9
10

问题是,我需要结果如下:

000000001
000000002
000000003
000000004
000000005
000000006
000000007
000000008
000000009
000000010

我想让八个 0 在数字增加时出现在数字之前,当数字达到 10 时它将是七个 0。我尝试了以下但没有用,正如您所猜测的那样,在 10 之前会有八个 0 .

DECLARE @m VARCHAR(50) = '1'

WHILE (@m <= 10)
BEGIN
        PRINT '00000000' +@m
        -- Increment the iterator
        SET @m = @m  + 1
END

基本上我只想保留 9 位数字,这听起来可能很愚蠢,但我能说什么(我的老板想要这样)。

4

2 回答 2

0

您可以使用该代码:

DECLARE @m VARCHAR(50) = '000000001'

WHILE (@m <= 10)
BEGIN
        PRINT SUBSTRING('00000000' + @m, LEN('000000000' + @m) - 9, 9)
        -- Increment the iterator
        SET @m = @m  + 1
END
于 2013-10-07T23:46:08.157 回答
0

如果你真的必须:

DECLARE @i int; Set @i = 1;
WHILE @i <= 10
BEGIN
    PRINT RIGHT('00000000' + cast(@m as char(9)), 9);
    SET @i = @i + 1;
END 

但请不要。数据应存储为原始数据,并且仅在显示时格式化,最好由客户端应用程序进行格式化。

于 2013-10-07T23:56:03.277 回答