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
功能......但同样的错误。
答
如果将逗号分隔的整数值列表作为字符串传递并希望使用每个值,则需要在.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)
错误消息完全可理解。该字符串不能作为整数来解释。你想如何解释它? – ppeterka 2013-03-06 09:40:37
包含数字和逗号的单个字符串值*不*与*多个*值的序列相同。 SQL Server不*查看单个值并决定将其分割成*多个*值。 – 2013-03-06 09:41:31
那么有没有办法做到这一点?我想在函数中一次传递所有值。 – Shaggy 2013-03-06 09:41:47