假设我的表有一个列ProfileID&我想用ProfileID过滤。 在存储过程中,我发送@ PageID,@ GroupID,@ ChannelID (所有3个参数都是可选的,如果没有发送,那么这些值默认为0)来存档实际上是ProfileID的数据。所以实际上我想用 WHERE ProfileID IN(@ PageID,@ GroupID,@ ChannelID)过滤数据但是如果所有3个参数都是0那么我不会过滤任何东西。我会过滤if& amp ;仅当至少1个参数> 0
时表结构
+--------+-----------------+---------------------+
| PostID | PostDescription | PostType ProfileID |
+--------+-----------------+---------------------+
| 25151 | Messed up | S 117 |
| 25152 | Messed up | S 116 |
| 25153 | Messed up | S 119 |
| 25154 | Messed up | S 11 |
| 25155 | Messed up | S 16 |
| 25157 | Messed up | S 23 |
| 25158 | Messed up | S 22 |
| 25159 | Messed up | S 7 |
| | | |
+--------+-----------------+---------------------+
如何使用WHERE条件实现此目的?
答案 0 :(得分:2)
只需使用or
:
WHERE ProfileID IN(@PageID,@GroupID,@ChannelID )
OR COALESCE(@PageID,@GroupID,@ChannelID) is null
如果参数为null,则上面为0
:
WHERE ProfileID IN(@PageID,@GroupID,@ChannelID )
OR (@PageID = 0 AND @GroupID = 0 AND @ChannelID = 0)