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

数値が増加しているときに数値の前に 8 つの 0 が表示されるようにしたいのですが、数値が 10 に達すると 7 つの 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 @i int; Set @i = 1;
WHILE @i <= 10
BEGIN
    PRINT RIGHT('00000000' + cast(@m as char(9)), 9);
    SET @i = @i + 1;
END 

しかし、しないでください。データはrawで保存し、できればクライアント アプリケーションによって、表示時にのみフォーマットする必要があります。

于 2013-10-07T23:56:03.277 に答える
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 に答える