0

我有一个存储过程参数organisationID,用于通过以下方式过滤我的查询:

where pr.ProfileID = @profileID
and oi.OrganisationID = @organisationID

我想合并它,以便如果传入 null 则查询不会被它过滤。

4

3 回答 3

4

执行此操作的典型方法是:

where (@profileID is null or pr.ProfileID = @profileID) and
      (@organisationID is null or oi.OrganisationID = @organisationID)
于 2013-05-28T14:01:52.213 回答
1
where pr.ProfileID = @profileID
and oi.OrganisationID = isnull(@organisationID, oi.OrganisationID)

这假设您只过滤一个值,逻辑可以应用于两个参数。

于 2013-05-28T14:02:43.783 回答
1

尝试:

where pr.ProfileID = COALESCE(@profileID, pr.ProfileID)
and oi.OrganisationID = COALESCE(@organisationID,oi.OrganisationID)
于 2013-05-28T14:03:43.360 回答