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)
另外,我现在需要停止插入和更新所有当前错误加长的数字.有什么建议?
也许这只是我的谷歌能力失败但我尝试搜索了很多页面.
为此,列应为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)