SQL Server存储过程动态SQL在WHERE子句中

时间:2015-08-11 20:37:00

标签: sql sql-server tsql where-clause

我编写了一个接受一个参数的存储过程。

Request_ID int = 0

稍后,在我的WHERE条款中,我需要完成以下操作。

我不知道如何描述它,但你可以看到我试图用这个完全伪造的伪代码做的事情:

WHERE isNull(a.Target_Department, '') <> ''
  AND isNull(a.Resolved_Date, '') = ''
  AND isNull(c.Request_Archived, '') <> 'Y'
  AND IF @Request_ID = 0 
        THEN Request_ID > 0 
        ELSE Request_ID = @Request_ID
    END

基本上,如果提供了特定的request_ID,我希望WHERE子句只缩小到特定的Request_ID。否则,我想要所有这些。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:4)

试试这个 - &gt;

WHERE
    (@Request_ID IS NULL OR Request_ID=@RequestID)

OR

WHERE
    (@Request_ID=0 OR Request_ID=@RequestID)

答案 1 :(得分:1)

and isnull(nullif(@RequestId,0),RequestId)=RequestId
相关问题