3

このような変数のnvarchar値をインクリメントしようとしています。

    declare @i int
    set @i = 0
    -- I want a book `@BookSerialNo`  to be increment like e.g abcde-1, abcde-2 
    set @BookSerialNo = CAST(@BookSerialNo +'-' + @i as nvarchar(50));
    WHILE(@i<>@Quantity)
        BEGIN
            INSERT INTO Library.BookDetail
            (
                BookId,
                BookSerialNo,
                CreatedBy,
                CreateDate,
                UpdateDate,
                Updateby
            )
            VALUES
            (
                @BookId,
                @BookSerialNo,
                @CreatedBy,
                @CreatedDate,
                @UpdatedDate,
                @UpdatedBy
            )
            SET @i = @i+1;
        END

だから、私の質問は、ループ内の各時間
の値をインクリメントする方法ですか?@BookSerialNo
たとえば、「abcdef-1」、「abcdef-2」、「abcdef-3」のようにしたいのですが、「-」の後に数字を含めたいだけです。

4

3 に答える 3

7

これを試して..

    set @BookSerialNo = @BookSerialNo +'-0';
    WHILE(@i<>@Quantity)
        BEGIN
            INSERT INTO Library.BookDetail
            (
                BookId,
                BookSerialNo,
                CreatedBy,
                CreateDate,
                UpdateDate,
                Updateby
            )
            VALUES
            (
                @BookId,
                @BookSerialNo,
                @CreatedBy,
                @CreatedDate,
                @UpdatedDate,
                @UpdatedBy
            )
            SET @i = @i+1;
            --increment the serialno also
            SET @BookSerialNo = SUBSTRING(@BookSerialNo, 0, CHARINDEX('-',@BookSerialNo)+1);  
            set @BookSerialNo = @BookSerialNo + CAST (@i as nvarchar(50));
        END
于 2013-03-19T06:58:17.263 に答える
2

set内側を動かすだけwhile

WHILE(@i<>@Quantity)
    BEGIN
    set @BookSerialNo = cast(@BookSerialNo as nvarchar(50)) +'-' + 
                        cast(@i as nvarchar(50));
    ....
    SET @i = @i+1;
    END
于 2013-03-19T06:43:37.237 に答える
0

@BookSerialNo データ型が nvarchar であると仮定

Try this

WHILE(@i<>@Quantity)
BEGIN
    set @BookSerialNo = @BookSerialNo +'-' + CONVERT(NVARCHAR(50),@i);
    ....
    SET @i = @i+1;
END
于 2013-03-19T06:56:03.097 に答える