我有一个类似上面的表,左边有两列(两者都是整数),我在这个表中添加了两个字段:
表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
更新:没关系。达姆逗号已被遗忘。
答案 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