我有以下存储过程
CREATE PROCEDURE sp1
(
@param1 bit,
@parma2 bit
)
AS
BEGIN
SELECT * from Table1 where
if @param1 = 1 then column1 is null
else if @parma2 = 1 then column1 is not null
END
显然,where子句中的If else部分不正确。有谁能建议如何解决它?
答案 0 :(得分:0)
这样的事情:
SELECT * from Table1 where
case
when @param1 = 1 then [column 1] is null
when @param2 = 1 then [column 1] is not null
end
但是这个过程不需要两个参数,只需要一个就足够了。
答案 1 :(得分:0)
使用此:
CASE WHEN condition THEN value ELSE value END
答案 2 :(得分:0)
尝试以下方法:
SELECT
Case WHEN @param1 = 1 THEN Null
Case WHEN @param2 = 1 THEN column1 Else '' End as column1 ,
* FROM Table1
如果param1 = 1,上面的语句会将column1设置为null,如果param2 = 1,它将获取column1的值,否则将其设置为空字符串。
答案 3 :(得分:0)
在我看来,最简单的选择就是使用AND
和OR
:
SELECT *
FROM Table1
WHERE (@param1 = 1 AND column1 is null)
OR (@parma2 = 1 AND column1 is not null)