2013-03-06 381 views
0

我正在將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

回答

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) 
相關問題