首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >oracle将日期与null进行比较

问oracle将日期与null进行比较
EN

Stack Overflow用户
提问于 2017-08-15 01:23:51
回答 2查看 17.2K关注 0票数 1

我有一个查询,我将一个表中的日期与另一个表中的最大日期进行比较。我遇到的问题是,当与之进行比较的日期为空时。因此,请使用以下查询:

代码语言:javascript
复制
select col1 from table1 where date > (select max(date) from table b);

除了当子查询返回0行之外,查询可以正常工作。在0行的情况下,我希望它返回所有行。因此,换句话说,我希望日期与日期时间最小值进行比较。因此,在0行的情况下,我想要比较:

代码语言:javascript
复制
date > '01-01-1900'

我尝试过使用case语句,但没有成功,但我觉得我错过了一些简单的东西。

任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-15 01:28:21

您希望使用NVL函数来提供帮助。

代码语言:javascript
复制
(NVL(p_datefield, to_date('01/01/1901','MM/DD/YYYY'))

所以对你来说:

代码语言:javascript
复制
select col1 from table1 where date > (select max(NVL(date, to_date('01/01/1901','MM/DD/YYYY')) from table b);

想法是01/01/1901代表null。如果您不喜欢它,那么将日期更改为您可以掌握的代表您的null的日期。

更新#1..下面的一条评论表明COALESCE会更好地工作。It could...so下面是这个例子:

代码语言:javascript
复制
select col1 from table1 where date > (select coalesce(date, to_date('01/01/1901','MM/DD/YYYY')) from table b);

现在你有选择了。好好享受吧。

票数 3
EN

Stack Overflow用户

发布于 2017-08-15 01:36:18

当子查询没有返回任何行时,您希望发生什么情况?日期与null的比较将导致主查询不返回任何内容-从技术上讲,这是正确的响应。如果您不想这样做,那么您需要使用NVL function将null替换为字符串值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45679781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档