SQL Server where子句中的IF语句
我做了一个噩梦,想在SQLServer2008中实现以下目标 我将3个变量传入存储过程,如果一个变量=1,那么我需要向where语句添加子句 下面是我尝试做的一个简单分类: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
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)
谢谢,太好了!你不会相信我今天为了做这件事浪费了多少时间!