PL/SQL Developer中如何过滤CASE语句返回NULL值的记录
解决方案
方法1:通过WHERE子句过滤NULL结果
直接筛选出NEW_UPDATED列不为空的记录,SQL示例:
SELECT -- 替换为你需要查询的其他列 column1, column2, CASE WHEN live_date >= SYSDATE - 30 THEN 'New in Last 30 Days' WHEN release_date >= SYSDATE - 30 THEN 'Updated in Last 30 Days' END AS NEW_UPDATED FROM your_table_name WHERE CASE WHEN live_date >= SYSDATE - 30 THEN 'New in Last 30 Days' WHEN release_date >= SYSDATE - 30 THEN 'Updated in Last 30 Days' END IS NOT NULL;
方法2:直接通过日期条件过滤(性能更优)
避免重复执行CASE判断,直接在WHERE子句中写核心筛选逻辑,效率更高:
SELECT -- 替换为你需要查询的其他列 column1, column2, CASE WHEN live_date >= SYSDATE - 30 THEN 'New in Last 30 Days' WHEN release_date >= SYSDATE - 30 THEN 'Updated in Last 30 Days' END AS NEW_UPDATED FROM your_table_name WHERE live_date >= SYSDATE - 30 OR release_date >= SYSDATE - 30;
注意点
- 若
live_date和release_date同时满足近30天的条件,CASE语句会优先返回第一个匹配的结果(即'New in Last 30 Days'),与你原逻辑保持一致。 - 方法2的性能优于方法1,因为数据库只需执行一次日期条件判断,无需重复计算CASE表达式。
内容的提问来源于stack exchange,提问作者ericr817
相关产品推荐
相关产品推荐

