Sql 更新列时添加/保留前导零
我正在使用下面的脚本以递增的顺序生成一些pin码,并希望包含前导零..尝试了所有类型的数据,但似乎丢失了前导零。如果您能帮我更新我的桌子,我将不胜感激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)) 表名:公
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脚本将只选择数据。更新一下怎么样?