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

6jygbczu  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(920)

我的目的是加上+1,使所需的值变成001+1==002,但它返回的是2而不是002请参见下面的示例查询

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

如果我得到的长度为3,那么我可以得到所需的值002使用复制函数请建议我如何才能得到长度为3或求和1与001=002
提前谢谢。

okxuctiv

okxuctiv1#

将原始字符串转换为int后,通过计算原始字符串的字符数与字符数的差值,可以确定继续执行的零的数目。然后,可以在复制函数中使用此差值为结果准备前缀。

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
wlsrxk51

wlsrxk512#

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

SELECT @l_EmploymentID = '001'

否则,该值将被解释为整数 1 .
如果您想输出一个带前导零的整数,那么 FORMAT() 可以帮助:

SELECT FORMAT(1, '000')

相关问题