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

PySpark转SQL:多分组条件CASE WHEN语句语法错误排查

问题解决:PySpark转SQL的CASE WHEN语法错误修正

你的转换错误核心在于把PySpark的contains方法错误对应成了SQL的IN操作符,这是两种完全不同的逻辑:

  • PySpark的col.contains("xxx")是模糊匹配字符串中是否包含子串,对应SQL的LIKE '%xxx%'
  • SQL的IN是用来匹配固定值集合(比如IN ('val1','val2')),不能用来做子串模糊匹配

另外~contains对应的是NOT LIKE '%xxx%',而非NOT IN 'xxx'。

修正后的SQL语句

CASE
    WHEN (tCounts = 3 AND Type1 LIKE '%pizza%') AND (Type1 NOT LIKE '%singleside%' OR Type1 NOT LIKE '%side%') THEN 2
    WHEN (tCounts = 3 AND Type1 LIKE '%pizza%') AND (Type1 LIKE '%singleside%' OR Type1 LIKE '%side%') THEN 1
END AS portalcount

可选优化:简化重复条件

因为两个WHEN分支都包含tCounts = 3 AND Type1 LIKE '%pizza%',可以把这部分条件提出来,用嵌套CASE提升可读性,不需要额外调整括号分组:

CASE
    WHEN tCounts = 3 AND Type1 LIKE '%pizza%' THEN
        CASE
            WHEN Type1 NOT LIKE '%singleside%' OR Type1 NOT LIKE '%side%' THEN 2
            ELSE 1
        END
END AS portalcount

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:18:13