SQL CASE语句评估NULL但仅返回NULL

时间:2013-06-28 14:30:00

标签: null sql-server-2000 case

我正在尝试识别我们的调度系统中打开的时间块,我唯一能做的就是检查块的描述是否为NULL。

时间作为INT存储在数据库中,因此该case语句用于将3或4个字符INT重建为DATETIME。

这是我的代码。 'stm'是块的开始时间。

case
when len(sd.sd_stm)=4 AND sd.sd_block_display IS NULL THEN convert(datetime,'2013-01-01 ' + substring(convert(varchar,sd.sd_stm),1,2)+':'+substring(convert(varchar,sd.sd_stm),3,2))
when len(sd.sd_stm)=3 AND sd.sd_block_display IS NULL THEN convert(datetime,'2013-01-01 ' + substring(convert(varchar,sd.sd_stm),1,1)+':'+substring(convert(varchar,sd.sd_stm),2,2))
ELSE '2013-01-01 00:00:00'
END

示例输入 - stm = 730 期望的输出 - 2013-01-01 07:30:00.000 实际产出 - 2013-01-01 00:00:00.000

我似乎遇到的问题是,一旦将block_display评估为NULL,它就会为stm的值返回null。当我为block_display执行此代码IS NOT NULL时,它执行正常。

请问任何建议?

0 个答案:

没有答案