Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server where子句中的IF语句_Sql_Sql Server 2008 - Fatal编程技术网

SQL Server where子句中的IF语句

SQL Server where子句中的IF语句,sql,sql-server-2008,Sql,Sql Server 2008,我做了一个噩梦,想在SQLServer2008中实现以下目标 我将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 OR

我做了一个噩梦,想在SQLServer2008中实现以下目标

我将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

执行此操作的典型方法是将逻辑直接放在
where
子句中:

where categoryId = @categoryId and
      (@var1 <> 1 or var = @var1) and
      (@var2 <> 1 or var2 = @var2) and
      (@var3 <> 1 or var3 = @var3)
其中categoryId=@categoryId和
(@var1 1或var=@var1)和
(@var2 1或var2=@var2)和
(@var3 1或var3=@var3)

谢谢,太好了!你不会相信我今天为了做这件事浪费了多少时间!