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
相关产品推荐
相关产品推荐

