Google 查询语言中的转义序列是啥?

Posted

技术标签:

【中文标题】Google 查询语言中的转义序列是啥?【英文标题】:What is the escape sequence in Google query language?Google 查询语言中的转义序列是什么? 【发布时间】:2019-08-20 17:38:13 【问题描述】:
=QUERY(,"SELECT 'I ask ""What's the escape sequence?""' ")
        "       '      "     '                      " ' " 

预期输出:

I ask "What's the escape sequence?"
" 整个查询字符串使用了双引号 ' 单引号用作SELECT 参数的边界/分隔符。 "" Double 双引号在SELECT 语句的参数中使用。

实际输出:

Unable to parse query string for Function QUERY parameter 2: PARSE_ERROR: Encountered " <> "s at line 1, column 21
Was expecting one of:    
<EOF >
"where"...
"group"
"pivot"
"order"...
.
.
.

(第 21 列是 "What" 之后的内部单引号 ')

我做过的事情:

Search官方文档=>什么都没有 将除定界符'以外的所有单引号'替换为双单引号''=>=QUERY(,"SELECT 'I ask ""What''s the escape sequence?""' ")=>同样的错误 在查询字符串中交换所有单引号' 和双引号"=>=QUERY(,"SELECT ""I ask 'What""s the escape sequence?'"" ") 以及=QUERY(,"SELECT ""I ask 'What""""s the escape sequence?'"" ")=>col21 处的相同错误

编辑:

我不是在寻找解决方法(在 Google 查询语言之外)。正如标题所述,我想知道是否存在 Google-query-language 接受的转义序列。 javascript 使用\ 作为转义序列,如\'mysql 使用两个单引号'' 而不是一个' 作为转义序列。虽然 Google 表格是首选平台,但如果在 JavaScript+google-vizualization(使用相同的查询语言)或任何使用 Google 查询语言 v0.7 的平台中接受转义序列,则答案是可以接受的。

【问题讨论】:

【参考方案1】:

问题出在 What's 中,解决方法如下:

=SUBSTITUTE(QUERY(QUERY( ,
 "select 'I ask ""What♠s the escape sequence?""'", 0), 
 "offset 1", 0), "♠", "'")


或将直单引号更改为倾斜的类似:

=QUERY(QUERY( ,
 "select 'I ask ""What`s the escape sequence?""'", 0), 
 "offset 1", 0)


=QUERY(QUERY( ,"select ""I ask ''What's the escape sequence?''""", 0), "offset 1", 0)

【讨论】:

我知道问题在于单引号。这就是为什么这个问题的标题是什么是转义序列。编辑我的问题以澄清我的意思。我不是在寻找解决方法。我想要单引号和双引号,并且我希望任何解决方法都在查询本身内。 @TheMaster 不太确定是否有转义 - 从未遇到过任何转义,但如果有人带它,期待它...... not so sure there is an escaping 实际上,单双引号 " 的双双引号 "" 是一个转义序列。如果我们像这样使用单双引号,QUERY(,"SELECT 'I ask "What's the escape sequence?"' ") 查询字符串将失败。 looking forward to it if anyone comes with it 我也希望如此。如果有人能想出那个序列,我也很乐意提供赏金。 @TheMaster 看起来不支持组合转义。它要么转义为双引号,要么转义为单引号:=QUERY(QUERY( ,"select ""I ask What's the escape sequence?""", 0), "offset 1", 0)【参考方案2】:

我很确定您需要将单引号加倍:

=QUERY(, "SELECT 'I ask ""What''s the escape sequence?""' ")

不知道你的查询界面是否需要双引号。反斜杠也很常用:

=QUERY(, "SELECT 'I ask \"What''s the escape sequence?\"' ")

【讨论】:

我很确定将单引号加倍并没有像第 2 点中所说的那样起作用。我在第 2 点的公式与您的完全相同。你可以很容易地测试这个here(官方新表链接)>只需输入A1>这个公式。【参考方案3】:

根据this support question,除了使用占位符并将查询函数包装在substitute() 函数中之外,可能没有什么好的方法......或者找到不需要的解决方法使用query(),我猜...

【讨论】:

以上是关于Google 查询语言中的转义序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章

转义序列各字符间可以有空格吗 是回车换刚么

C中空格的转义序列是啥?

09 SQL语言——通配符(模糊查询),转义字符(使用escape)

请求筛选模块被配置为拒绝包含双重转义序列的请求.啥意思

为啥是 ”\?” C/C++ 中的转义序列?

url中的双转义序列:请求过滤模块配置为拒绝包含双转义序列的请求