动态连接

Dynamic Concatenation

我正在开发一个 table 并且我 运行 遇到了一个问题,我可能会以错误的方式解决这个问题,但我遇到了障碍。我在我的 table 中有 ID,我需要更新它是一个 NVARCHAR(12) 字段,目前它有数字。我需要将其格式化如下:TP0000000001、TP0000000002、...、TP0000245632、...、TP9999999999。我只需要找到一种方法来附加 TP 和尾随零加上整个字符串加起来为 12 的 ID 号。我目前正在使用带有一些硬编码信息的 while 循环,但我需要它是动态的,因为我有大约 14000要更新的记录。

这是我要使用的更新:

UPDATE Vendor
SET TPPRM_ID = <The Formatted Value>

这是当前将数字格式化为正确硬编码的代码,我需要格式化的列是调用 TPPRM_ID,如您在更新中所见。如有任何帮助,我们将不胜感激。

DECLARE @Var NVARCHAR(12)
DECLARE @Counter INT
SET @VAR = 'TP'
SET @Counter = 1

WHILE @Counter <= 12
    BEGIN
        SET @VAR = @VAR + '0'
        SET @Counter = @Counter + 1

        IF LEN(@Var) >= 10 
        BEGIN
            SELECT @VAR +  '10'
            PRINT @VAR
            BREAK
        END

        --PRINT @VAR
    END

只需补满零,然后切掉最右边的 10 个字符。然后追加 'TP'.

SELECT 'TP' + RIGHT(REPLICATE('0',10) + TPPRM_ID),10)
FROM Vendor

另一个解决方案是-

SELECT 'TP' + REPLACE(STR(TPPRM_ID, 10), ' ', 0) 
FROM Vendor