Azure Search查询筛选器中单引号转义方法求助
解决OData筛选器中单引号的转义问题
在OData的$filter语法里,正确转义字符串中单引号的方式是使用两个连续的单引号,这是OData规范明确规定的转义方式,反斜杠确实不被支持——这就是你尝试反斜杠没用的原因。
针对你的场景,正确的查询语句应该是:
*&$count=true&$filter=Name eq 'David O''Neil'
至于你提到用单引号转义(也就是双单引号)没返回记录的情况,可以排查几个方向:
- 先确认数据源里的目标名称确实是
David O'Neil,有没有大小写差异?部分OData服务的字符串匹配是大小写敏感的,如果数据里是david o'neil,严格的筛选就会匹配不到。 - 检查URL的编码是否正确?如果是直接在浏览器地址栏输入,双单引号一般不需要额外编码,但如果是通过代码发送请求,要确保请求工具没有错误转义这些字符。
- 确认你对接的OData服务是否严格遵循OData标准?极少数自定义的OData服务可能有特殊的转义规则,但绝大多数标准实现都是支持双单引号转义的。
举个更直观的例子:如果要筛选名为O'Connor的记录,筛选器应该写成Name eq 'O''Connor',而不是其他形式。
内容的提问来源于stack exchange,提问作者Arron
相关产品推荐
相关产品推荐

