IS NULL不起作用

时间:2016-08-02 14:11:40

标签: sql sql-server-2012 null isnull

我有一个类似上面的表,左边有两列(两者都是整数),我在这个表中添加了两个字段:

表1:

Asset_Value    Contract_Value  
-------------------------------
0              NULL             
NULL           200               
0              NULL     

查询:

Select 
    Asset_Value, Contract_Value,
    Case 
       when Asset_Value is null 
          then 1 
          else 0 
    end As Ind_ForNullA,
    Case 
       when Contract_Value is null
          then 1 
          else 0 
    end As IndForNullC
from 
    table1

然而,我得到了奇怪的结果:

Asset_Value Contract_Value  Ind_ForNullA IndForNullC
----------------------------------------------------
0              NULL              1            1
NULL           200               0            0
0              NULL              0            1

更新:没关系。达姆逗号已被遗忘。

3 个答案:

答案 0 :(得分:0)

尝试使用' '空字符串而不是null。

答案 1 :(得分:0)

你为什么要把某些东西定义为NULL - 这是合适的 - 但是,在这种情况下或那个,将它改为一个或零(尝试布尔值,我想) - 哪个不合适? / p>

接下来你会做什么:在第三个报告中,你想要一个显示TRUE或FALSE的REAL布尔值?

在整个应用程序中,在任何地方或不是,始终如一地使用NULL。但是,请勿混合并匹配PARADIGMS并期望获得一致的结果。另外,尽量不要依赖CASE:有非常非常合理的理由依赖于此 - 尤其是对于像你正在做的那样简单化的事情。

仅供参考,我能想到你为什么要这个“指标”字段的唯一原因是你可以测试INDICATOR_A是否为1.但是,既然你可以测试ASSET IS NULL,为什么还要麻烦?当没有强烈的理由时,千万不要引入无关的机制。

答案 2 :(得分:0)

尝试使用函数ASCII

  

ASCII(character_expression)

使用此功能,您可以了解Asset_Value列中的真实字符:例如,NULL值必须具有ASCII码:' 00' Table with character ASCII code