[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