【问题标题】:ODATA : Issue with "OR" OperatorODATA:“或”运算符的问题
【发布时间】:2020-12-02 20:59:58
【问题描述】:

我正在尝试使用 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 Operator 连接,这不起作用

/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'))

谁能告诉我我做错了什么?

谢谢 问候

普拉特

【问题讨论】:

  • "which doesn't work" 你收到任何错误消息了吗?
  • @vc74 :我在 IE 中测试,它说找不到页面。如果我在 2 个 or 之间使用 and ,那么我会看到一些结果。但我只能使用OR(Phone eq '%2B33 123456789' or Phone eq '%2B33 1 23 45 67 89') and (Mobile eq '%2B33 123456789' or Mobile eq '%2B33 1 23 45 67 89')
  • Page not found 只是许多 API 在没有结果时的默认响应。 API 中的“找不到页面”应解释为“找不到数据”

标签: odata


【解决方案1】:

因为你的条件只是OR'd 在一起,你不要使用所有这些括号来强制执行。 (括号无关紧要,但根据 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')

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多