-1

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

4

3 回答 3

2

在转换之前删除逗号(我假设它们是千位分隔符):

select @OutletID = cast(replace(@outlet, ',', '') as int)
于 2013-02-22T10:12:10.523 回答
0

根据您的问题,您可以将REPLACE其用作演员表的一部分:

select cast(replace(replace(@v3, char(13), ''), char(10), '') as int)

如果这是经常发生的事情,最好清理数据并修改表格的填充方式以在输入之前删除 CR 和 LF。

或者去这个链接:

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

于 2013-02-22T10:21:33.423 回答
0

在转换之前使用替换功能删除所有逗号。演示

declare @outlet varchar(1000)= '3,324,345', @outletId int

select @outletId = convert(int,replace(@outlet,',',''))
select @outletId

或者,如果您试图将它们分成两个变量(根据上面的评论),那么;演示

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
于 2013-02-22T10:14:30.817 回答