Ser*_*dia 1 sql t-sql sql-server sql-server-2012
如果@reasonID = 1,我只需要选择原因ID = 211的策略
如果@reasonID = 2,我只需要选择具有reasonID <> 211的策略
如果@reasonID = NULL,则需要选择所有策略,包括 NULL
在下面的示例中,它适用于@reasonID = 1和@reasonID = 2。
但是,当@reasonID =时,如何调整WHERE子句以选择所有行NULL?
declare @TempTable table (PolicyNumber varchar(50), reasonID int)
insert into @TempTable values ('Pol1', 5),
('Pol2', NULL),
('Pol3', 211),
('Pol4', 8),
('Pol5', 211),
('Pol6', NULL)
--input @reasonID parameter
declare @reasonID int = 2
select PolicyNumber,reasonID
from @TempTable
where
(case when reasonID = 211 then 1 else 2 end = @reasonID) --works fine
OR (@reasonID = NULL) --does not work
Run Code Online (Sandbox Code Playgroud)
小智 6
您IS NULL不使用= NULL。
您的最后一行应该是:
OR (@reasonID IS NULL)
Run Code Online (Sandbox Code Playgroud)
而且,如果您想进行相反操作,则语法为IS NOT NULL。