sql - Null是否大于任何日期数据类型?

标签 sql null db2

我在DB2中有此查询

SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A


如果SYSDATENULL,假设@A@A是Date数据类型,它是否大于SOMESCHEMA.SOMETABLE.SYSDATE的任何值?

请帮忙。提前致谢。

最佳答案

对于比较可以包含NULL值的值有用的另一个谓词是DISTINCT谓词。如果两列均包含相等的非null值,则使用常规的相等比较(COL1 = COL2)比较两列将为true。如果两个列都为null,则结果将为false,因为null永远不会等于任何其他值,甚至不会等于另一个null值。使用DISTINCT谓词,将空值视为相等。因此,如果两列都包含相等的非null值,并且两列均为null值,则COL1与DISL不会区别。


DB2 Null Handling

这意味着所有比较操作都将为假,因为您正在将未知值与某物进行比较。因此,无论您使用哪种比较(只有IS NULL / IS NOT NULL操作都起作用!),它都是错误的。

如果您希望查询正常工作,则应使用类似

SELECT * 
  FROM SOMESCHEMA.SOMETABLE 
 WHERE COALESCE(SYSDATE, TIMESTAMP_FORMAT('0001-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS'))  > @A

关于sql - Null是否大于任何日期数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629864/

相关文章:

sql-server - 如果数据集为空,则无法通过 SSRS 嵌套报告

php - MySQL id null 和一些长而奇特的描述 null

sql - 在 SQL 中以不同的顺序查找姓名和姓氏

mysql - 使用同一表中不同的选定值更新表

c# - Ajax.beginform 将空值发布到 Controller

db2 - 如何从 DB2 中获取列名

php - 我的代码错误通知 : Trying to get property of non-object in

java - Queue.Poll() 返回 null 但 Queue.size() >0 在 java 队列中

db2 - 如何解决 Websphere 上的 StaleConnection 问题

sql - 如何从 DB2 中的列中获取表名?