You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CASE WHEN无ELSE默认返回NULL,如何过滤a大于30的对应行?

实现方案

你可以通过两种常见方式实现需求:

方案1:WHERE层提前过滤(推荐)

直接在查询的WHERE条件中排除不符合要求的行,避免CASE语句生成NULL值,性能更优:

SELECT
    CASE 
        WHEN a < 10 AND a != 0 THEN a
        WHEN a > 10 AND a < 30 THEN b
    END AS value_a
FROM 你的表名
-- 若a=10也属于需要过滤的范围,可将条件调整为 (a < 10 AND a != 0) OR (a > 10 AND a < 30)
WHERE a <= 30

方案2:外层过滤NULL值

如果你不方便调整原查询的WHERE条件,可以嵌套一层查询过滤掉返回NULL的行:

SELECT value_a 
FROM (
    SELECT
        CASE 
            WHEN a < 10 AND a != 0 THEN a
            WHEN a > 10 AND a < 30 THEN b
        END AS value_a
    FROM 你的表名
) AS sub_query
WHERE value_a IS NOT NULL

注意说明

你当前的CASE逻辑没有覆盖a=10的场景,如果a等于10也属于有效范围,调整第二个WHEN条件为WHEN a >= 10 AND a < 30即可。

内容的提问来源于stack exchange,提问作者user3495160

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 08:12:02