语句中带有运算符的条件WHERE子句

时间:2018-07-18 19:47:11

标签: sql sql-server tsql

我有一个存储过程,正在尝试对它执行条件WHERE子句。我认为该解决方案很容易,但是由于某种原因,它使我逃脱了。

我要实现的是:如果将ID(在这种情况下为@pbid)传递给存储过程,我只想返回与该参数匹配的一条记录,否则我想返回所有结果。桌子。

这是我想出的内容,显然不起作用,因为我正在尝试对PBID (PBID =)进行均等评估,并且希望有条件地进行那

 where pb.PBID =
    CASE WHEN @pbid is not null THEN 
    @pbid  --just return results with this ID
    ELSE
    is not null --return all results
  END

如果是C#或类似的代码,我会这样写:

if(intPBID > 0) --parameter set, only return results with that param
{
   pb.PBID = intPBID
}
else
{
  pb.PBID > 0 --return everything
}

我希望这不会造成混淆,希望您能提供任何反馈意见。

谢谢

1 个答案:

答案 0 :(得分:2)

我不确定性能会带来什么影响,但是我通常会做类似的事情:

SELECT *
FROM table
WHERE (@pbid IS NULL OR pb.PBID = @pbid)