如果SQL变量为null,则选择包括null的所有数据

时间:2017-01-06 13:05:26

标签: sql sql-server sql-server-2012

我必须在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,我希望返回整个(样本)表

1 个答案:

答案 0 :(得分:5)

使用or

SELECT *
FROM StatusTable
WHERE (Status = @Status or @Status IS NULL);