我的问题是我可以在一个语句中完成这两个选项的功能并摆脱IF吗?
DECLARE @recID INT;
--Case 1
SET @recID = null;
--Case 2
--SET @recID = 117;
IF @recID is null
BEGIN
select * from myTable WHERE [myIDcolumn] is null -- works when recID is null
END
ELSE
BEGIN
select * from myTable WHERE [myIDcolumn] = @recID -- works when recID is number
END
Run Code Online (Sandbox Code Playgroud)
T.J*_*der 10
怎么回事:
select *
from myTable
WHERE [myIDcolumn] = @recID or (@recID is null and [myIDcolumn] is null)
Run Code Online (Sandbox Code Playgroud)
如果@recID是null,第一部分永远不会是真实的,但第二部分将是,如果[myIDcolumn]是null,它涵盖的null情况.如果@recID不是null,则第一部分将在适当时匹配(并且第二部分将被忽略).所以两个案例都被涵盖了.
| 归档时间: |
|
| 查看次数: |
9264 次 |
| 最近记录: |