谁能告诉我为什么我的case语句返回null(好)

时间:2019-07-11 03:41:23

标签: sql sql-server three-valued-logic

我有一个带有case语句的查询返回null(good),但是当对每种情况使用where语句时,在输出中都有记录。

select a,b,sysdate ,      
 CASE 
     WHEN a IS NULL  AND SYSDATE > b THEN 'O'
     WHEN a IS NULL AND SYSDATE <= b THEN 'W'
     WHEN a > b THEN 'Fail'
     WHEN a <= b THEN 'Pass'
   else 'good'
 END  as result
 from mytable
  

a | b | sysdate |结果

     

空| null | 19年7月10日|好

     

空| null | 19年7月10日|好

     

空| null | 19年7月10日|好

     

空| null | 19年7月10日|好

我执行此查询(或其他两个查询)时有输出

select a,b,sysdate  from mytable 
where a > b 

输出(在哪里查询):

  

a | b | sysdate

     

10-APR-15 | 2015年4月6日| 19年7月10日|

     

06-APR-15 | 2015年4月6日| 19年7月10日|

     

02-APR-15 | 15年4月1日| 19年7月10日|

select a,b,sysdate  from mytable 
  where a IS NULL  AND SYSDATE > b 

select a,b,sysdate from mytable
   where a <= b

1 个答案:

答案 0 :(得分:0)

$container.offset({ 'left': 100, 'top': mouse.y - ( event_state.mouse_y - event_state.container_top ) }); 语句获得where个值时,它返回null,这将从结果集中排除记录。

详细了解SQL Server中的三种有价值的逻辑(只需在Google上搜索:)即可。)

这就是为什么您没有任何记录的原因。例如,共同映射到unknown列(其中a始终为a)不会导致失败的记录。

您需要使用null或类似的“ coalesce-防止”功能。