2012-04-22 77 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