将varchar转换为int

时间:2013-02-22 10:11:06

标签: sql type-conversion

我有以下代码; 我正在尝试将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

时转换失败

3 个答案:

答案 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。

或者转到此链接:

http://msdn.microsoft.com/en-IN/library/ms187928.aspx