BigQuery:WHERE子句引用含撇号的列值报错问题咨询
解决SQL WHERE子句中含引号字符串的语法错误问题
核心问题分析
你之前使用"是HTML转义实体,SQL解析器无法识别,导致语法错误;原语句里的单引号未转义,触发SQL语法冲突。目标字符串是带首尾双引号且内部含单引号的"Order's past cutoff",需要用SQL标准的字符串转义方式处理。
可行解决方案
方案1:SQL标准单引号转义(通用所有数据库)
用单引号包裹整个目标字符串,内部的单引号用两个连续单引号转义,首尾双引号直接保留:
WHERE Cut_Time_LOS_by_Outgate = '"Order''s past cutoff"'
解析:SQL规定字符串内部的单引号需用双单引号表示,外层单引号用于界定整个字符串,双引号作为普通字符直接包含在内即可。
方案2:部分数据库支持的反斜杠转义(如MySQL)
如果你的数据库支持反斜杠转义(需确认数据库配置,比如MySQL默认支持),可以用反斜杠转义内部的单引号,外层用单引号包裹:
WHERE Cut_Time_LOS_by_Outgate = '"Order\'s past cutoff"'
或者用双引号包裹整个字符串(若数据库允许双引号作为字符串界定符,如MySQL开启ANSI_QUOTES模式):
WHERE Cut_Time_LOS_by_Outgate = "\"Order's past cutoff\""
注意:这种方式兼容性不如方案1,仅适合特定数据库配置。
错误原因说明
你之前尝试的'"Order's past cutoff"'是HTML转义写法,SQL无法解析"实体,同时内部的'依然未转义,导致双重语法错误,因此不能使用HTML实体来处理SQL字符串。
内容的提问来源于stack exchange,提问作者Vegeta1
相关产品推荐
相关产品推荐

