关于NULL与空值的问题

我之前用xls做数据源的时候用=‘’来判断空单元格,当时出错了,提问后解决了问题,也知道了在fr里空单元格返回的是NULL,直到昨天开始用数据库连接做数据源

有一个数据集查询是这样的

select * from icmo 

where fqty=2740 and fworkshop=355 and fnote=NULL

在fnote=NULL,这个地方如果用fnote='',数据集能返回我要的结果,如果用NULL就不行,这个我倒也能理解。不过回到FR里,我之前的经验是空单元格返回值都是NULL,而不能直接用=''来做过滤条件,可是现在这种情况我发现反而只有用=''才能正确过滤。不知道为什么会相反的情况?请高手解惑。。


FineReport lanfengye 发布于 2018-12-19 08:57
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
axingLv6专家互助
发布于2018-12-19 09:19

''和null不一样,''表示一个空的字符串,null表示一个空的对象

blob.png

这是因为在数据库判断null值,不能直接用=号,而要用is null,例如and fnote is null

你在sql用fnote=''查出来的数据,在fr也只能用等于''来判断

blob.png

fr对应的空格返回的是空对象,在fr里null没有实际意义,null可以代表空对象,abc也可以,efg也可以,换而言之,A1是空的,你写A1=ABC那也是成立的(注意不是'ABC',没有引号),总结:你随便输入一串没被定义为参数的字符(不用引号),都可以与空匹配,因为这也会被认为是一个空的对象

最佳回答
0
孤陌Lv6资深互助
发布于2018-12-19 09:07

这个要根据情况不同 多加判断的 如果查看数据库里的数据 空的数据显示NULL 那你就用 fnote=NULL 如果不是那就等于“” 还有一种就是显示为空 但是实际是有空格 那你还要多加一个判断" " 用OR来

最佳回答
0
luozhiweiLv5见习互助
发布于2018-12-19 09:25

fnote is null

最佳回答
0
myseanLv3初级互助
发布于2018-12-19 09:29

SQL 里面字段为空不能 field=null这样。

where field is null  这是这个字段从没写入过值的判断

field='' 这样判断是写入过空值的判断。

还可以 isnull(field,0)=0 这样数据库里没写入过值和写入过值的都会是0.

最佳回答
0
yysandyLv2见习互助
发布于2018-12-19 09:46

fnote is null 是正解.

  • 6关注人数
  • 1424浏览人数
  • 最后回答于:2018-12-19 09:46
    请选择关闭问题的原因
    确定 取消
    返回顶部