[TSQL] IN 所揭的不是子查詢時 是變數該如何處理

[TSQL] IN 所揭的不是子查詢時 是變數該如何處理

DECLARE @CustID varchar(50)
SET @CustID = 'TOMSP,HANAR'

-- 錯誤 因為 IN 不能用變數的方式 exec 也不行運作
/*
語法
test_expression [ NOT ] IN
    (
        子查詢 (Subquery)
        | expression [ ,...n ]
    )

*/

當 IN 要接變數時,就要改用 CHARINDEX 來做處理
-- 無法叫出資料
--exec ('SELECT * FROM Orders WHERE CustomerID   IN  ('+@CustID+')')
-- 驗證叫出的資料
SELECT * FROM Orders WHERE CustomerID =  'TOMSP' OR  CustomerID =  'HANAR'
--可以使用這種方法來做 IN
SELECT * FROM Orders WHERE CHARINDEX(CustomerID,@CustID) > 0
http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=504980&SiteID=14