我有以下情况:
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
我希望8号0在数字增加之前显示在数字之前,当数字达到10时它将是7 0。我尝试了以下但是它没有用,你会猜到8个0在10之前。
DECLARE @m VARCHAR(50) = '1'
WHILE (@m <= 10)
BEGIN
PRINT '00000000' +@m
-- Increment the iterator
SET @m = @m + 1
END
基本上我只想保留9位,这可能听起来很愚蠢,但我能说什么(我的老板想要那样)。
答案 0 :(得分: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
答案 1 :(得分: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
但请不要。数据应存储在原始中,并且仅在显示时格式化,最好由客户端应用程序格式化。