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 查询语言中的转义序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章