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

Python中Snowflake SQL含转义字符语句的执行问题

Python中Snowflake LIKE语句的正确转义方式

问题根源

你当前的SQL语句在Python中执行时出现语法错误,核心原因是Python字符串转义与Snowflake SQL转义的层级冲突:

  • 原语句中ESCAPE '\\'在Python解析后,会变成ESCAPE '\'发送给Snowflake;
  • Snowflake会将\视为转义符,转义了后面的单引号,导致SQL字符串未闭合,最终触发unexpected '_'的语法错误。

你提到SQL中的每个反斜杠都重复了两次,但这只处理了LIKE子句中的转义,没覆盖ESCAPE子句的完整转义逻辑。

正确解决方案

方案1:使用Python原始字符串(推荐)

原始字符串(带r前缀)会跳过Python的转义处理,直接将字符串原样传递给Snowflake。根据Snowflake的配置调整反斜杠:

# 若Snowflake未启用STRICT_STRING_ESCAPE参数,直接写单个反斜杠
sql = r"WHERE SOMECOLUMN LIKE 'product\_%\_season\_s%\_premium' ESCAPE '\'"

# 若Snowflake启用了STRICT_STRING_ESCAPE,需将ESCAPE的反斜杠写成两个
sql = r"WHERE SOMECOLUMN LIKE 'product\_%\_season\_s%\_premium' ESCAPE '\\'"

方案2:使用普通字符串,双重转义反斜杠

每个反斜杠需要写4次:Python解析时将4个\\转为2个,Snowflake再将2个转为1个,最终得到正确的转义字符:

sql = "WHERE SOMECOLUMN LIKE 'product\\\\_%\\\\_season\\\\_s%\\\\_premium' ESCAPE '\\\\'"

验证逻辑

最终传递给Snowflake的正确SQL语句应该是:

WHERE SOMECOLUMN LIKE 'product_%_season_s%_premium' ESCAPE ''

(如果Snowflake启用严格转义,则ESCAPE子句应为ESCAPE '\\')

内容的提问来源于stack exchange,提问作者Mike de H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:55:19