1

首先对于标题感到抱歉,我知道它并不清楚,但我找不到更好的一个!我有一份Crystal报告。此报告不使用命令(sql查询)从oracle数据库中获取数据。以前的开发人员使用表之间的链接,以便动态生成查询。当与字符串比较时,列中出现空值的行不会显示

我用菜单“Show Sql Query”查看生成的sql查询。我生成sql查询的原因是因为有些记录没有显示在结果中,所以我想在SQL Developer中执行查询,并且发现问题并相信我这是一个非常奇怪的问题。实际上,在WHERE子句中有这个过滤器(TableX.FieldY <>'blabla')。通常它应该包含那列中包含NULL的行,但事实并非如此!

在结果中,oracle不显示在该列中具有空值的行!我相信null与'blablabla'不同,那么为什么该列中具有null值的记录不显示?你可以帮我吗?另外,即使解决方案要修改查询中的某些内容,我也无法修改查询,因为它是由Crystal报表自动生成的。非常感谢你的宝贵帮助。

Walloud

回答

1

NULL不等于任何值。 NULL有自己的比较,IS NULL或IS NOT NULL:

TableX.FieldY <> 'blabla' 
OR TableX.FieldY IS NULL 
+1

应该先完成空检查,否则检查将失败。所以,'isnull({table.field})或{table.field} <>'blablah'' – Ryan

+0

这是Crytal报告的语法问题?从SQL逻辑的角度来看,这应该不重要。 –

+0

是的,当CR遇到null时,它将停止评估语句。 – Ryan

相关问题