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

Roh*_*Raj 1 sql sql-server sql-server-2012

我必须在SQL Server 2012中运行查询以从表中选择数据.有一个变量@status.如果此变量为null,则必须返回所有数据(如果为value)

我有一个示例查询

SELECT * 
FROM StatusTable 
WHERE (Status = IIF(@status IS NULL, status, @status))
Run Code Online (Sandbox Code Playgroud)

当此查询@status不为null时,此查询正常工作,但是当它为null时,它仅返回status列不为null的行.

样品表:

| id | status | Data |
|----|--------|------|
| 1  | null   | a    |
| 2  | ok     | b    |
| 3  | fail   | c    |
| 4  | fail   | d    |
| 5  | null   | e    |
Run Code Online (Sandbox Code Playgroud)

什么时候@status"失败":

| id | status | Data |
|----|--------|------|
| 3  | fail   | c    |
| 4  | fail   | d    |
Run Code Online (Sandbox Code Playgroud)

但是当@status为null时,它返回:

| id | status | Data |
|----|--------|------|
| 2  | ok     | b    |
| 3  | fail   | c    |
| 4  | fail   | d    |
Run Code Online (Sandbox Code Playgroud)

请帮助,谢谢

PS:如果状态为null,我希望返回整个(样本)表

Gor*_*off 5

用途or:

SELECT *
FROM StatusTable
WHERE (Status = @Status or @Status IS NULL);
Run Code Online (Sandbox Code Playgroud)