我的数据库中有两个表。第一个称为F,第二个称为T。F存储两个信息。 “ date_received”和“ date_removed”可以为空。 T仅存储任意日期的“日期”。 F可以存储对象的信息。例如,
2019-05-19 2019-05-31 ==>表示在这些日期之间它属于某个人
2019-06-03 NULL ==>表示它仍然属于某人。
我在T中有两个约会,分别是2019-05-25和2019-06-05。 对于2019-05-25来说很容易找到,因为我可以使用BETWEEN子句,但是 2019-06-05我不能。 我需要编写if-else或case条件来检查F.date_removed是否为空
CASE
WHEN F.date_removed IS NULL THEN T.date > F.date_received
ELSE T.date BETWEEN F.date_received AND F.date_removed
END
如何处理此问题。我需要根据“ date_removed”的null来在两个比较选项之间切换
答案 0 :(得分:2)
据我了解,您的规则将保留在where子句中,因此您可以这样做。
WHERE
((F.date_removed IS NULL AND T.date > F.date_received) OR (T.date BETWEEN F.date_received AND F.date_removed))
答案 1 :(得分:1)
另一种选择,它的罗word性稍差。
WHERE
T.date >= F.date_received
AND (F.date_removed IS NULL OR T.date <= F.date_removed)