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

BigQuery中存储含换行与引号的查询字符串语法错误解决方法

问题描述

我尝试将编译后的代码(包含大量换行的完整查询语句)存储到BigQuery的表中,但当查询语句以带引号的字符串结尾时,无法生成完整字符串。示例代码如下:

select
   'this is a string',
   '''this is the string
   I am not
   able
   to store
   where field = 'string''''

执行时出现错误:

Syntax error: Unclosed string literal at.

我曾考虑检查字符串是否以引号结尾并移除,但这样会导致查询语句不完整,请问该如何解决这个问题?

解决方法

在BigQuery中,用三重单引号包裹多行字符串时,需遵循两个核心规则:

  • 字符串内部的单引号必须用两个连续单引号转义
  • 若字符串本身以单引号结尾,要在结尾额外加一个单引号,区分内容里的引号与闭合用的三重引号

针对你的示例,修正后的代码如下:

select
   'this is a string',
   '''this is the string
   I am not
   able
   to store
   where field = ''string'''''

具体解释

  1. 原语句里的'string'改为''string'',让BigQuery识别这是字符串内容的一部分,而非字符串的闭合标记
  2. 结尾的'''''实际拆解为:字符串的最后一个单引号 + 三重闭合引号(' + '''),这样BigQuery能准确判断字符串的结束位置,不会抛出未闭合的语法错误

如果不想用三重单引号,也可以尝试用双引号包裹整个字符串,但需要先执行SET QUOTED_IDENTIFIER OFF;(默认是开启状态),不过这种方式处理多行字符串不如三重单引号直观,更推荐前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:12:12