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

SQL Server:如何添加要选择的case语句,sql,sql-server,stored-procedures,if-statement,case,Sql,Sql Server,Stored Procedures,If Statement,Case,我使用下面的select从数据库表中查询日期 此查询的输入ms来自一个xml字符串,然后存储过程循环遍历xml中的所有单个值,为每个值返回一个特定的整数。 到目前为止,这一切都很好 如果输入ms为空/无,是否有方法返回占位符号,如99999? 目前,在这种情况下,下面的返回值为0,我无法使用该值来识别它,因为在其他情况下,0也可能是有效的结果 到目前为止,我的存储过程: 提前非常感谢您在这方面的帮助,Tim。如果ms列实际上为NULL或已填充,请使用ISNULL 选择ISNULLms,99999

我使用下面的select从数据库表中查询日期

此查询的输入ms来自一个xml字符串,然后存储过程循环遍历xml中的所有单个值,为每个值返回一个特定的整数。 到目前为止,这一切都很好

如果输入ms为空/无,是否有方法返回占位符号,如99999? 目前,在这种情况下,下面的返回值为0,我无法使用该值来识别它,因为在其他情况下,0也可能是有效的结果

到目前为止,我的存储过程:


提前非常感谢您在这方面的帮助,Tim。

如果ms列实际上为NULL或已填充,请使用ISNULL

选择ISNULLms,99999作为日期

但是,如果该列可以包含与NULL不同的空字符串,那么也可以使用NULL


选择isnullifms,99999作为日期

谢谢。是的,它可以包含一个空字符串,但我无法将其添加到上面的选择中,因为它会导致一个错误,即我的选择列表中只能有一个元素。好的,我可以添加此内容,只是之前有一个输入错误-对此表示抱歉。ms被定义为datetime,所以它从99999中创建一个日期,使之成为2173-10-15T00:00:00。有没有办法避免这种情况,以便我可以保留该值?数据类型与数据类型相同。您应该设置相同数据类型的默认值。但您可以尝试将值强制转换或转换为字符串。事实证明,您建议使用ISNULL/NULLIF是一个完美的解决方案,非常适合我的需要,只需稍微修改代码的某些部分。再次感谢!
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')