如何在 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
我的目的是添加 +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