2017-09-26 36 views
0

以下是我的查詢和錯誤。當我把VARCHAR變量和通過INT值,然後我得到錯誤。將VARCHAR數據和搜索INT值取得錯誤

查詢:

declare @vid VARCHAR(MAX) 
    set @vid= ('3,5,7') 

    Select (Stuff((Select ', ' + VehicleClassName 
    From VehicleClass_Master 
    where VehicleClassId in (@VID) FOR XML PATH('')),1,2,'')) 

錯誤:

Msg 245, Level 16, State 1, Line 3 Conversion failed when converting the varchar value '3,5,7' to data type int.

+0

可能重複https://stackoverflow.com/q/337704/1048425 – GarethD

回答

1

你的可變@vid是含有非數字字符一個varchar(,);它也不是一個「列表」,它只是一個包含單個值的字符串,它恰好在其中包含數字和逗號。

要acheive你想要什麼,創造@vid與一個INT列的表變量,然後將每個值作爲一個單獨的行 - INSERT @vid_table(vid) VALUES (3),(5),(7);

最後更改IN (@VID)IN (SELECT VID FROM @vid_table)

0
declare @vid VARCHAR(MAX),@query varchar(max) 
set @vid= ('3,5,7') 
SET @query = 'Select (Stuff((Select '', '' + VehicleClassName From VehicleClass_Master where VehicleClassId in (' + @vid + ') FOR XML PATH('''')),1,2,''''))' 
EXEC (@query) 
+0

或者你可以做它作爲動態SQL :) – SQLBadPanda

+0

請使用您的問題上的編輯鏈接添加額外的信息。後回答按鈕應該只用於問題的完整答案。 - [來自評論](/ review/low-quality-posts/17446360) – LokiSinclair

相關問題