如何在 SQL 中保留整数或 varchar 的前导 0 位?

How to preserve leading 0 digits from an integer or varchar in SQL?

我的目的是添加 +1 以便所需的值变为 001 + 1 == 002 但它 returns 我 2 而不是 002 请参阅下面的示例查询

DECLARE @l_EmploymentID NVARCHAR(30)/ int
SELECT @l_EmploymentID = 001
SELECT LEN(@l_EmploymentID)-- output is 1

如果我得到的长度为 3,那么我可以使用 REPLICATE 函数得到所需的值 002 请建议我如何将长度设为 3 或将 1 与 001 = 002

相加

提前致谢。

如果要字符串,需要单引号:

SELECT @l_EmploymentID = '001'

否则,该值被解释为整数 1

如果你想输出带前导零的整数,那么FORMAT()可以帮助:

SELECT FORMAT(1, '000')

可以通过计算原始字符串的字符数与将原始字符串转换为INT后的字符数的差值来确定前导零的个数。然后可以在您的 REPLICATE 函数中使用此差异来为您的结果准备前缀。

DECLARE @l_EmploymentID varchar(30)
SELECT @l_EmploymentID = '001'
SELECT REPLICATE('0', LEN(@l_EmploymentID) - LEN(CAST(@l_EmploymentID AS INT))) + CAST(@l_EmploymentID + 1 as VARCHAR) --output is 002