如何使用TSQL增加while循环中的NVarchar值?

Dot*_*mer 3 sql t-sql sql-server

我试图增加像这样的变量的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
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,
如何@BookSerialNo在循环中增加eache time 的值?
我希望它像'abcdef-1','abcdef-2','abcdef-3',我只想在' - '后面加上数字.

Sha*_*bal 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
Run Code Online (Sandbox Code Playgroud)