2013-05-07 137 views
-1

我有一个噩梦试图拿出一些东西,将实现在SQL Server 2008之后IF在SQL Server语句的where子句

我在3个变量传递到存储过程中,如果一个变量= 1然后我需要添加条款的where语句

的什么,我试图做一个简单的故障是在这里:

SELECT * 
FROM products 
WHERE categoryId = @categoryId 
If @var1 = 1 Then 
AND var = @var1 
If @var2 = 1 Then 
AND var2 = @var2 
If @var3 = 1 Then 
AND var3 = @var3 

ORDER BY productName 

回答

4

做这方面的一个典型的方法是直接把逻辑where子句中:

where categoryId = @categoryId and 
     (@var1 <> 1 or var = @var1) and 
     (@var2 <> 1 or var2 = @var2) and 
     (@var3 <> 1 or var3 = @var3) 
+0

谢谢你这完美!你不会相信我今天浪费了多少时间试图做到这一点! – user2358810 2013-05-07 15:00:59