Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 更新列时添加/保留前导零_Sql_Sql Server - Fatal编程技术网

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

Sql 更新列时添加/保留前导零,sql,sql-server,Sql,Sql Server,我正在使用下面的脚本以递增的顺序生成一些pin码,并希望包含前导零..尝试了所有类型的数据,但似乎丢失了前导零。如果您能帮我更新我的桌子,我将不胜感激 WITH PIN_NO AS ( SELECT 4310 + ROW_NUMBER() OVER(ORDER BY Firstname, Lastname ) NEW_PIN, * FROM Citizen ) UPDATE PIN_NO SET PIN = CAST(NEW_PIN AS VARCHAR(10)) 表名:公

我正在使用下面的脚本以递增的顺序生成一些pin码,并希望包含前导零..尝试了所有类型的数据,但似乎丢失了前导零。如果您能帮我更新我的桌子,我将不胜感激

WITH PIN_NO
AS
(
    SELECT 4310 + ROW_NUMBER() OVER(ORDER BY Firstname, Lastname ) NEW_PIN, *
    FROM Citizen
)

UPDATE PIN_NO
SET  PIN = CAST(NEW_PIN AS VARCHAR(10))
表名:公民

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

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
任何其他相关脚本都会有所帮助。
谢谢

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

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)

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

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)

使用复制/右键功能:

下面的示例可能会帮助您:

DECLARE @tbl1 AS TABLE
(
    ITEM_NBR  VARCHAR(5),
    GRP_NBR VARCHAR(5)
)

INSERT INTO @tbl1 VALUES('0001',221)
INSERT INTO @tbl1 VALUES('0002',221)
INSERT INTO @tbl1 VALUES('0003',221)
复制:

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
右侧:

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

使用复制/右键功能:

下面的示例可能会帮助您:

DECLARE @tbl1 AS TABLE
(
    ITEM_NBR  VARCHAR(5),
    GRP_NBR VARCHAR(5)
)

INSERT INTO @tbl1 VALUES('0001',221)
INSERT INTO @tbl1 VALUES('0002',221)
INSERT INTO @tbl1 VALUES('0003',221)
复制:

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
右侧:

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

什么类型的
PIN00
?关键字是“padding”,看看答案是什么类型的
PIN00
?关键字是“padding”,看看答案像charm…谢谢!脚本末尾的“10”,它的用途是什么?@optimiteve,最后一个
10
RIGHT
函数的第二个参数是要获取的字符串的最终长度。例如,如果您希望PIN长度为15个字符,请将
'000…000'
字符串长度设为15个字符,然后将
10
更改为
15
。效果与charm类似…谢谢!脚本末尾的“10”,它的用途是什么?@optimiteve,最后一个
10
RIGHT
函数的第二个参数是要获取的字符串的最终长度。例如,如果您希望PIN长度为15个字符,请将
'000…000'
字符串设置为15个字符长,然后将
10
更改为
15
。您好,谢谢Sandip。脚本中DECLARE的用途/需要是什么。我用DECLARE定义了一个临时表,并用dataall给你举了一个例子。我认为使用VARCHAR数据类型通常会保留zero@Sandip...your脚本将只选择数据。更新一下怎么样?嗨,谢谢Sandip。脚本中DECLARE的用途/需要是什么。我用DECLARE定义了一个临时表,并用dataall给你举了一个例子。我认为使用VARCHAR数据类型通常会保留zero@Sandip...your脚本将只选择数据。更新一下怎么样?