2015-04-24 83 views
4

我已經遍尋搜索並在條件where clauses上找到問題,但是沒有條件地將and件附加到where clause上。我不是一個sql /數據庫的人,我來自另一個IT地區,因爲我們的常規數據庫人員已經不在了,所以今天已經被拋入了「去嘗試修復它」的問題。我有基本的編程概念和知識,但sql對我來說只是一種外來動物。有條件地追加AND到SQL Select語句中的where子句

我有一個簡單:

SELECT abc FROM table WHERE [email protected] 

但我需要它來添加:

AND [email protected] 

但只有當@otherdt不爲空。如果它爲空,我不想添加AND部分。我嘗試了一些方法來做到這一點,但它一直給我一個錯誤。任何幫助表示讚賞。這是我最後一次不成功的嘗試:

SELECT abc FROM table 
WHERE [email protected] 
IF @otherdt IS NOT NULL 
BEGIN 
AND [email protected] 
END 
+0

Ahh THANK YOU shawnt00 and ibiza that worked beautiful。 – Taylor

回答

1

您可以使用此條件:

SELECT abc FROM table 
WHERE [email protected] AND (@otherdt IS NULL OR otherdt = @otherdt) 
2
SELECT abc FROM table 
WHERE sdate = @somedt AND (@otherdt IS NULL OR otherdt = @otherdt) 
0
DECLARE @Sql NVARCHAR(MAX) 
     ,@somedt DATETIME 
     ,@otherdt DATETIME 

SET @Sql = N' SELECT abc 
       FROM table 
       WHERE sdate = @somedt ' 
     + CASE WHEN @otherdt IS NOT NULL 
       THEN N' AND otherdt = @otherdt' 
      ELSE N'' END 

Exec sp_executesql @Sql 
        ,N'@somedt DATETIME , @otherdt DATETIME' 
        ,@somedt 
        ,@otherdt