Google Sheets QUERY函数where子句如何使用含撇号字符串
QUERY函数where子句匹配含撇号字符串的解决方案
在Google Sheets的query函数中,where子句默认使用半角单引号作为字符串值的边界标记,如果待匹配的字符串本身包含撇号(半角单引号),会被解析器判定为字符串提前终止,触发语法错误,原报错示例公式如下:
=QUERY(D:E;"select E where D = 'this string's apostrophe breaks my code'";0)

可根据使用场景选择以下任意一种方案修复:
单引号转义法
QUERY语法规则中,被单引号包裹的字符串内部,连续输入2个半角单引号,会被解析为字符串内容本身的1个单引号,不会被识别为边界标记。直接把字符串内部的撇号替换为两个连续单引号即可,修改后可正常运行的公式如下:=QUERY(D:E;"select E where D = 'this string''s apostrophe breaks my code'";0)注意此处的
''是两个独立的半角单引号,不是一个双引号字符。双引号包裹法
QUERY同时支持用半角双引号作为字符串值的边界标记。由于示例公式中的查询语句整体用双引号包裹,在公式内部书写双引号需要连续输入2个半角双引号完成转义,这种写法不需要修改字符串内部的任何撇号,适合待匹配内容中存在大量单引号的场景,修改后公式如下:=QUERY(D:E;"select E where D = ""this string's apostrophe breaks my code""";0)单元格动态传值法(推荐长期使用)
如果待匹配的字符串存储在单元格中,不要硬编码在查询语句内,通过文本拼接的方式传入值,搭配替换函数提前完成转义,可以一劳永逸规避所有引号冲突问题。例如待匹配的内容存放在G1单元格,公式可写为:=QUERY(D:E;"select E where D = '"&SUBSTITUTE(G1;"'";"''")&"'";0)公式中的
SUBSTITUTE函数会自动将单元格内容里的所有单引号替换为转义所需的双单引号,无论单元格内容是否包含撇号都能正常执行筛选。
内容的提问来源于stack exchange,提问作者Boris Grunwald
相关产品推荐
相关产品推荐

