我有以下代码; 我正在尝试将varchar转换为int,我收到错误。
基本上我想得到以下结果:
@OutletID = 423,324
有人可以帮忙吗?
Declare @outlet varchar(1000),
@outletID int
Select @outlet = '423,324'
Select '@Outlet',@outlet
Select @OutletID = Convert(int, @outlet, @OutletID)
将varchar值'423,324'转换为数据类型int
时转换失败答案 0 :(得分:2)
在转换之前删除逗号(我假设它们是千位分隔符):
select @OutletID = cast(replace(@outlet, ',', '') as int)
答案 1 :(得分:0)
使用替换功能在转换前删除所有逗号。 DEMO
declare @outlet varchar(1000)= '3,324,345', @outletId int
select @outletId = convert(int,replace(@outlet,',',''))
select @outletId
或者如果你试图将它们分成两个变量(根据上面的评论),那么; DEMO
declare @outlet varchar(1000)= '123,345', @id1 int, @id2 int
select @id1=left(@outlet,charindex(',',@outlet,1)-1),
@id2=right(@outlet,len(@outlet)-charindex(',',@outlet,1))
select @id1,@id2
答案 2 :(得分:0)
根据您的问题,您可以使用REPLACE
作为演员的一部分:
select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)
如果这是经常发生的事情,最好清理数据并修改表格填充的方式,以便在输入之前删除CR和LF。
或者转到此链接: