SQL Server:如何添加case语句来选择

时间:2014-03-06 16:24:47

标签: sql sql-server stored-procedures if-statement case

我使用以下select来查询数据库表中的日期。

此查询的输入(ms)来自xml字符串,然后存储过程循环遍历xml中的所有单个值,以便为每个值返回一定数量(整数)。 这到目前为止工作正常。

如果输入(ms)为空/无,我是否可以返回占位符编号(如99999)? 目前,在这种情况下,下面返回0,我无法用它来识别,因为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')

非常感谢提供任何帮助,蒂姆。

1 个答案:

答案 0 :(得分: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