我在DB2中有此查询
SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A
如果
SYSDATE
是NULL
,假设@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/