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

Big Query中Case语句含撇号的匹配问题求助

BigQuery中Case语句匹配含撇号文本的解决方案
  • 方法1:标准SQL下的双单引号转义(与Netezza逻辑一致)
    BigQuery默认使用标准SQL,此时和Netezza的转义逻辑相同,用两个单引号表示字符串中的一个单引号即可,写法如下:

    CASE
      WHEN LOWER(a.case_detail) LIKE LOWER('%doesn''t have an account%') THEN '目标标记'
      ELSE '其他分类'
    END
    

    若你的项目仍在使用Legacy SQL(不推荐),则需用反斜杠转义单引号:

    CASE
      WHEN LOWER(a.case_detail) LIKE LOWER('%doesn\'t have an account%') THEN '目标标记'
      ELSE '其他分类'
    END
    
  • 方法2:使用原始字符串简化写法
    BigQuery支持原始字符串字面量,用r"..."包裹字符串时,内部的单引号无需转义,写法更直观:

    CASE
      WHEN LOWER(a.case_detail) LIKE LOWER(r"%doesn't have an account%") THEN '目标标记'
      ELSE '其他分类'
    END
    

    若用r'...'包裹,内部单引号仍需用两个单引号转义,与标准写法逻辑一致。

  • 额外优化:减少重复函数调用
    可提前对目标字段做小写转换,提升查询效率:

    WITH processed_data AS (
      SELECT LOWER(case_detail) AS lower_case_detail
      FROM your_table a
    )
    SELECT
      CASE
        WHEN lower_case_detail LIKE r"%doesn't have an account%" THEN '目标标记'
        ELSE '其他分类'
      END AS case_tag
    FROM processed_data
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:33:12