2017-03-08 106 views
0

块我有下面的存储过程IF ELSE在SQL查询

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子句是不正确的。任何人都可以建议如何解决它?

回答

0

事情是这样的:

SELECT * from Table1 where 
    case 
     when @param1 = 1 then [column 1] is null 
     when @param2 = 1 then [column 1] is not null 
end 

但你并不需要两个参数,在此过程中,只有一个就足够了。

0

使用此:

CASE WHEN condition THEN value ELSE value END 
0

尝试以下操作:

SELECT 
Case WHEN @param1 = 1 THEN Null 
Case WHEN @param2 = 1 THEN column1 Else '' End as column1 , 
* FROM Table1 

上面的语句将设置COLUMN1为空,如果参数1 = 1,它会得到COLUMN1的值,如果参数2 = 1,否则它会将其设置为空字符串。

0

我看来,像最简单的办法是使用ANDOR

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