IF ELSE在哪里查询sql块

时间:2017-03-08 07:07:59

标签: sql sql-server sql-server-2012

我有以下存储过程

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部分不正确。有谁能建议如何解决它?

4 个答案:

答案 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)

在我看来,最简单的选择就是使用ANDOR

SELECT * 
FROM Table1 
WHERE (@param1 = 1 AND column1 is null)
OR (@parma2 = 1 AND column1 is not null)