我不是SQL专家,这让我很困惑。
我有一个正在调用的存储过程。我将名为@Requested的变量传递给它,该变量用作布尔值。
我正在尝试:
SELECT
ID
FROM
SomeTable
WHERE
Requested = CASE @Requested WHEN 0 THEN IS NULL WHEN 1 THEN IS NOT NULL END
;
我在SQL Server Management Studio中收到错误消息,指出
Incorrect syntax near 'IS'
显然,如果我执行
THEN 'some string'
,则上面的代码有效。我已经完成了
Requested CASE
...和Requested = CASE
本质上我想要的是
Requested IS NULL
要么
Requested IS NOT NULL
基于作为@Requested传入的值。
有任何想法吗?
谢谢
最佳答案
通过WHERE
语句在OR
子句中使用这两个条件。这就创建了一个条件,其中基于@Requested
变量的值使用了适当的逻辑。
Select ID
From SomeTable
Where ((@Requested = 0 And Requested Is Null)
Or (@Requested = 1 And Requested Is Not Null));
关于sql-server - 有没有一种方法可以基于变量将WHERE子句中的比较设置为IS NULL或IS NOT NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41510626/