2017-03-08 66 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)