查询返回意外值

时间:2014-11-11 15:11:42

标签: sql sql-server

所以我有以下问题:

SELECT CASE 
         WHEN (SELECT COUNT(col) 
               FROM   table 
               WHERE  <some conditions>) = 0 THEN 0 
         ELSE (SELECT col 
               FROM   table
               WHERE  <some conditions>
              ) 
       END

带计数的第一个语句返回0但是case语句似乎跳转到else子句,然后返回一个没有值的值。

这是在小提琴中复制的问题:

http://sqlfiddle.com/#!6/6ae7c3/3

思想?

1 个答案:

答案 0 :(得分:1)

这不是错误。它正在返回0,但会转换为datetime。你可以得到同样的东西:

SELECT cast(0 as datetime)

如果它转到else子句,它将返回NULL