在更新列时添加/保留前导零

时间:2016-09-14 12:18:17

标签: sql sql-server

我使用下面的脚本以增量顺序生成一些引脚号,并希望包含一个前导零。所有类型的数据类型,并且似乎正在丢失前导零。非常感谢在UPDATING我的表格中提供一些帮助

Firstname       Lastname    PINOO      Address  Age    other columns....
John             Smith                20001     19
Andrew           Evans                363252    30
Bill             Towny                63322     67
Dame             Beaut                34222     34

表名:Citizen

Firstname       Lastname    PINOO     Address  Age    other columns....
John             Smith      04310    20001      19
Andrew           Evans      04311    363252     30
Bill             Towny      04312    63322      67
Dame             Beaut      04313    34222      34

希望它是

fontsize

任何其他相关脚本都会有所帮助。 感谢

2 个答案:

答案 0 :(得分:4)

在数字前加上足够的零,并使用RIGHT将其截断为所需的长度。

WITH PIN_NO
AS
(
    SELECT 4310 + ROW_NUMBER() OVER(ORDER BY Firstname, Lastname ) NEW_PIN, *
    FROM Citizen
)
UPDATE PIN_NO
SET  PIN = RIGHT('0000000000' + CAST(NEW_PIN AS VARCHAR(10)), 10)

答案 1 :(得分:1)

使用复制/正确功能

以下示例可以帮助您:

SELECT 
    REPLICATE
    (
        '0',
        4-LEN(MAX(CAST(ITEM_NBR     as INT)))
    ) + 
    CAST( MAX(CAST(ITEM_NBR     as INT))+1 AS VARCHAR(5)) 
FROM @tbl1
GROUP BY GRP_NBR

<强> REPLICATE:

SELECT 
    RIGHT
    (
        (
            '00000000000'
            + 
            CAST( MAX(CAST(ITEM_NBR as INT))+1 AS VARCHAR(5))
        ) ,
        4
    ) 
FROM @tbl1
GROUP BY GRP_NBR

右:

.preformatted {
    white-space: pre-wrap;
    word-break: break-all;
}