SharePoint Online REST API $filter混合AND/OR运算符及括号查询报错问题咨询
这个问题我之前也碰到过!其实根源不是SharePoint不允许混合使用AND/OR和括号,而是OData Filter的逻辑运算符大小写不符合规范。
问题原因
SharePoint Online的REST API基于OData v3规范,要求逻辑运算符必须使用大写形式:AND、OR、NOT。你当前的Filter表达式用了小写的and和or,单独使用时SP API可能做了兼容处理,但当组合带括号的复杂表达式时,API的语法解析器就会判定表达式无效。
正确的Filter表达式
把小写的and/or替换成大写的AND/OR即可,修改后的完整请求URL如下:
/sites/projects/_api/Web/Lists/getByTitle('Projects')/items?$select=Id&$filter=ProjectStatus eq 'In Progress' AND (ProjectName eq 'ABC' OR ProjectName eq 'XYZ')
额外注意事项
如果是在代码中构造这个请求URL,建议对特殊字符进行URL编码(比如空格、括号),避免因环境或传输问题导致解析错误,编码后的URL示例:
/sites/projects/_api/Web/Lists/getByTitle('Projects')/items?$select=Id&$filter=ProjectStatus%20eq%20'In%20Progress'%20AND%20%28ProjectName%20eq%20'ABC'%20OR%20ProjectName%20eq%20'XYZ'%29
编码规则:
- 空格 →
%20 - 左括号 →
%28 - 右括号 →
%29
这样修改后,你的组合过滤条件就能正常执行了。
内容的提问来源于stack exchange,提问作者AymKdn
相关产品推荐
相关产品推荐

