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

AWS Glue SQL Transform中CASE语句匹配失败问题排查

问题分析与修正方案

你的CASE语句写法有误,导致匹配失败,主要问题有两个:

  1. CASE表达式类型错误
    你用了CASE column_a的简单CASE语法,这种写法会把column_a的值和WHEN后面的内容做等值匹配,但你写的是条件判断(比如column_a LIKE '%_string_1%'),这会把布尔值(true/false)和column_a的字符串值比较,自然无法匹配。应该改用搜索CASE表达式,去掉CASE后面的列名,直接在WHEN后写判断条件。

  2. 通配符与列引用错误

  • LIKE中的_是通配符,代表匹配任意单个字符,如果你的目标是匹配包含_string_1的字符串(下划线是实际字符),需要对下划线转义,比如写成%\_string_1%(Glue SQL支持用反斜杠转义实际下划线)。
  • 第二个WHEN里引用了column_b,但这是你要创建的新列,在当前SELECT语句中还未生成,无法被引用,应该继续使用column_a。

修正后的代码

select *
, CASE
    WHEN column_a LIKE '%\_string_1%' THEN 'String 1'
    WHEN column_a LIKE '%\_string_2%' THEN 'String 2'
    -- 可添加ELSE分支处理不匹配的情况
    ELSE 'Other'
  END AS column_b
from myDataSource

如果之前尝试精确匹配也失败,同样是CASE语法问题,修正后的精确匹配代码:

select *
, CASE
    WHEN column_a = 'string_1' THEN 'String 1'
    WHEN column_a = 'string_2' THEN 'String 2'
    ELSE 'Other'
  END AS column_b
from myDataSource

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:01:23