2014-03-06 72 views
1

我正在使用以下select從數據庫表中查詢日期。SQL Server:如何添加case語句來選擇

該查詢的輸入(毫秒)來自xml字符串,存儲過程然後遍歷xml中的所有單個值以返回每個值的特定數字(整數)。 迄今爲止,這工作正常。

如果輸入(ms)爲空/沒有,我可以返回一個佔位符號碼(如99999)嗎? 目前,在這種情況下,我不能用它來標識這個值,因爲0在其他情況下也可以是有效結果。

我保存至今的過程:

SELECT ms as date, 
    type, 
    (
     SELECT COUNT(calendar_dt) 
     FROM  Calendar 
     WHERE  day_of_week NOT IN (1, 7) 
     AND   calendar_dt > GETDATE() 
     AND   calendar_dt <= ms 
    ) as bDays 
FROM @dates 
FOR XML PATH('ms'), ELEMENTS, TYPE, ROOT('ranks') 

提前爲任何幫助,蒂姆非常感謝。

回答

2

如果列「ms」實際上是NULL或填充,只需使用ISNULL。

http://technet.microsoft.com/en-us/library/ms184325.aspx

SELECT ISNULL(ms, 99999) AS date

然而,如果該列可以包含一個空字符串,這是不一樣的NULL,則也使用NULLIF。

http://technet.microsoft.com/en-us/library/ms177562.aspx

SELECT ISNULL(NULLIF(ms,''), 99999) AS date

+0

感謝。是的,它可以包含一個空字符串,但我不能將它添加到我上面的選擇中,因爲它會導致錯誤,說我的選擇列表中只能有一個元素。 – user2571510

+0

好的,我可以補充一點,之前只有一個錯字 - 對不起。 ms被定義爲日期時間,所以它創建一個99999的日期,使它成爲2173-10-15T00:00:00。有沒有辦法避免這一點,以便我可以保持價值? – user2571510

+1

數據類型與數據類型一樣。您應該設置具有相同數據類型的默認值。但是您可以嘗試將CAST或CONVERT值轉換爲字符串。 –