SQL - 将varchar值转换为Int时转换失败

SQL - 将varchar值转换为Int时转换失败

问题描述:

我正在将varchar值传递给SQL函数。SQL - 将varchar值转换为Int时转换失败

但我得到这个错误:

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the varchar value '201,505,59,43,2202' to data type int.

示例代码:

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

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

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

+1

错误消息完全可理解。该字符串不能作为整数来解释。你想如何解释它? – ppeterka 2013-03-06 09:40:37

+2

包含数字和逗号的单个字符串值*不*与*多个*值的序列相同。 SQL Server不*查看单个值并决定将其分割成*多个*值。 – 2013-03-06 09:41:31

+0

那么有没有办法做到这一点?我想在函数中一次传递所有值。 – Shaggy 2013-03-06 09:41:47

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

有一吨这个堆栈溢出的答案这里有一些

只是另一种方式是声明表变量:

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

Select * From EventMsg Where Event IN (SELECT err FROM @errorCodes)