我有以下SQL
select *
from posts
where expiry_date is > GETDATE()
expiry_date
是一个可以为空的datetime
列。基本上我想要检索所有尚未过期的帖子,以及expiry_date
为空的所有帖子。
我如何实现这一目标?我需要OR条件吗?
答案 0 :(得分:2)
下面是SQL Server:
我需要OR条件吗?
答案:是的
你还有一个语法错误,我修复了:
select * from posts where expiry_date > GETDATE() OR expiry_date IS NULL
答案 1 :(得分:1)
某些版本的SQL具有NULL安全运算符。然而,最通用的方法是明确的测试:
select p.*
from posts p
where p.expiry_date > GETDATE() pr p.expiry_date is null;
您也可以使用coalesce()
:
select p.*
from posts p
where coalesce(p.expiry_date, getdate() + 1) > GETDATE() ;
答案 2 :(得分:0)
SELECT * FROM posts WHERE expiry_date > GETDATE() OR expiry_date is NULL
在SQL Server上。