0

我正在将varchar值传递给 SQL 函数。

但我得到这个错误:


将 varchar 值“201,505,59,43,2202”转换为数据类型 int 时,消息 245,级别 16,状态 1,行 2转换失败。

示例代码:

Declare @Fault Varchar(Max) = '201,505,59,43,2202'

Select * 
From EventMsg 
Where Event IN (Convert(Int, @Fault))

我尝试了两个CAST&CONVERT功能......但同样的错误。

4

2 回答 2

1

如果您将逗号分隔的整数值列表作为字符串传递并希望使用每个值,那么您将需要编写一个类似于 .NET 世界中的 String.Split 的函数。

Stack Overflow 上有很多关于这个的答案,这里有一些

于 2013-03-06T09:41:56.243 回答
0

另一种方法是声明表变量:

DECLARE @errorCodes AS TABLE (
    err INT
)
INSERT INTO @errorCodes (err) VALUES (1), (2), (3)

Select * From EventMsg Where Event IN (SELECT err FROM @errorCodes)
于 2013-03-06T09:43:31.980 回答