我必须在SQL Server 2012中运行查询以从表中选择数据。有一个变量@status
。如果此变量为null,则必须返回所有数据,否则返回值
我有一个这个
的示例查询SELECT *
FROM StatusTable
WHERE (Status = IIF(@status IS NULL, status, @status))
当@status
不为null时,此查询正常工作但是当它为null时,它只返回status列不为空的行。
样本表:
| id | status | Data |
|----|--------|------|
| 1 | null | a |
| 2 | ok | b |
| 3 | fail | c |
| 4 | fail | d |
| 5 | null | e |
@status
是"失败":
| id | status | Data |
|----|--------|------|
| 3 | fail | c |
| 4 | fail | d |
但是当@status
为null时,它返回:
| id | status | Data |
|----|--------|------|
| 2 | ok | b |
| 3 | fail | c |
| 4 | fail | d |
请帮助,谢谢
PS:如果状态为null,我希望返回整个(样本)表
答案 0 :(得分:5)
使用or
:
SELECT *
FROM StatusTable
WHERE (Status = @Status or @Status IS NULL);