ODATA:“或”运算符出现问题

时间:2019-01-08 14:35:02

标签: odata odata-v4 odata-v3

我正在尝试使用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'))

有人可以告诉我我在做什么错吗?

谢谢 问候

老鼠

1 个答案:

答案 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')
  

在这种情况下没有错误消息,因为条件只是过滤掉了您希望看到的行。
  解析查询没有错误,这通常是错误消息的来源。

如果这不起作用,请提供两个确实有效的查询的原始输出,以便我们帮助确定可能还有其他问题。

  

通常,这些问题归结为您要比较的字符串和值的特定名词。