2012-04-22 52 views
0

我的存儲過程中收到 「@CatergoryIDs VARCHAR」select * from表在哪裏(動態條件)

@CatergoryIDs包含分離單個或多個ID 「|」,

我的存儲過程是這樣的:

Select R.ID,,CategoryID, (sum(C.Rating)/Count(R.ID)) as "Rating" 
    from Table1 R 
    left outer join Table2 C 
    ON R.ID = C.ID 
    GROUP BY R.ID 
    having R.CategoryID = @CatergoryID 
    RETURN 
+0

如果您使用SQL Server 2008或更高版本,則應考慮使用TVP(表值參數)。 – Lucero 2012-04-22 08:34:36

回答

2

您應該可以使用CHARINDEX。但是,這非常低效,因此將@CategoryID作爲表變量會更好。

SET @CatergoryID = '|'[email protected]+'|'; 
SELECT R.ID, R.CategoryID, (SUM(C.Rating)/COUNT(R.ID)) AS Rating 
    FROM Table1 AS R 
    LEFT OUTER JOIN Table2 AS C 
    ON R.ID = C.ID 
    WHERE CHARINDEX('|'+R.CategoryID+'|', @CatergoryID)>0 
    GROUP BY R.ID, R.CategoryID