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

Snowflake CASE语句实现:列存在值返回1否则返回0的方法

问题解答

可以通过CASE语句实现该需求,你原写法的判断条件语法有误,调整后即可正常运行。

错误点说明

你原语句中CASE WHEN d.COL_A exists的写法不符合SQL规范:

  • EXISTS关键字仅用于判断子查询是否存在匹配返回结果,不能直接用来判断单个字段是否为非空值
  • SQL中判断字段是否存在有效非空值的标准语法是字段名 IS NOT NULL

正确实现代码

以下为通用标准SQL写法,可适配MySQL、PostgreSQL、Oracle、SQL Server等绝大多数数据库:

SELECT *,
  CASE 
    WHEN d.COL_A IS NOT NULL THEN 1 
    ELSE 0 
  END AS Col_B
FROM Data D

如果你的业务规则中空字符串''也属于「无有效数值」需要返回0的场景,可以拓展判断条件:

SELECT *,
  CASE 
    WHEN d.COL_A IS NOT NULL AND TRIM(d.COL_A) != '' THEN 1 
    ELSE 0 
  END AS Col_B
FROM Data D

效果验证

使用你提供的示例数据运行上述语句,输出结果完全符合预期:

Col ACol B
1/1/20201
1/2/20201
1/3/20201
0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:09:03