MS SQL Server零填充

Jar*_*ryd 4 sql sql-server stored-procedures sql-server-2012

编辑:
我正在将列数据类型更改为Varchar,如果建议工作,答案将被upvoted

全文:我收到一个人的数据,其中每个人的长度为5位,我处理此信息,然后将变量发送到处理此数据插入的存储过程.将变量发送到存储过程时,我似乎丢失了任何前缀0.
例如:
发送到存储过程的编号 - 实际插入的编号列

12345 - 12345  
01234 - 1234  
12340 - 12340  
Run Code Online (Sandbox Code Playgroud)

这似乎只发生0在前面的数字上.我收到的意思是:
00012它会插入为12

有没有办法我可以更新列以始终0用固定数字向左填充,这意味着如果我们得到12它将自动生成值00012.
或者
在变量插入表之前由存储过程接收变量时,是否有办法对变量执行此操作.有点像:

SET @zeroPaddedFixedNum = LeftPad(@numberRecieved, '0', 5);  
Run Code Online (Sandbox Code Playgroud)

另外,我现在需要停止插入和更新所有当前错误加长的数字.有什么建议?

也许这只是我的谷歌能力失败但我尝试搜索了很多页面.

Mad*_*nan 5

为此,列应为varchar数据类型.然后你可以这样做

Insert into table(col)
select right('00000'+cast(@var as varchar(5)),5)
Run Code Online (Sandbox Code Playgroud)

编辑:更新现有数据

Update table
set col=right('00000'+cast(col as varchar(5)),5)
where len(col)<5
Run Code Online (Sandbox Code Playgroud)