我正在尝试使用OR
运算符创建ODATA网址。
我有两个工作正常的URL,并且具有如下所示的过滤器
CorporateAccountCollection?$filter=(Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89')
和
CorporateAccountCollection?$filter=(Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89')
我试图将上述2个过滤器与另一个OR
运算符(不起作用
/CorporateAccountCollection?$filter=((Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89') or (Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89'))
有人可以告诉我我在做什么错吗?
谢谢 问候
老鼠
答案 0 :(得分:1)
由于您的条件只是OR
在一起,因此您不会使用所有这些括号来强制执行。 (括号并不重要,但是根据API使用的查询解析器,有时有时会误将双括号解释为隐式AND
您的查询应为:
CorporateAccountCollection?$filter=Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89' or Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89'
或者如果您喜欢外括号:
CorporateAccountCollection?$filter=(Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89' or Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89')
在这种情况下没有错误消息,因为条件只是过滤掉了您希望看到的行。
解析查询没有错误,这通常是错误消息的来源。
如果这不起作用,请提供两个确实有效的查询的原始输出,以便我们帮助确定可能还有其他问题。
通常,这些问题归结为您要比较的字符串和值的特定名词。