【问题标题】:how to skip null values in odata response?如何在 odata 响应中跳过空值?
【发布时间】:2013-10-15 13:35:18
【问题描述】:

我有一个返回一些空值的 odata Web 服务。我想跳过这些空值。 我尝试使用 Ne(Not equal) 运算符过滤具有空值的数据:

analyticView.xsodata/analyticView?$select=QUANTITY_SOLD,SALE_PRICE&$filter=SALE_PRICE+Ne+null)&$format=json

我收到以下错误消息:

"Illegal operation 'Ne' at position 11."

我也尝试以这种方式将 Not 运算符与 eq 运算符结合起来:

analyticView.xsodata/analyticView?$select=QUANTITY_SOLD,SALE_PRICE&$filter=not(SALE_PRICE+eq+null)&$format=json

我不断收到一条错误消息:

value: "No property 'null' exists in type ...

我使用 SAP HANA 分析视图作为数据源,但我认为这个问题与供应商无关。 那么,如何跳过空值呢?

【问题讨论】:

  • 类中的SALE_PRICE是如何定义的?
  • 如果了解您的问题,以下是在 odata 提供者的元数据中定义 SALE_PRICE 的方式 跨度>
  • 我想我想了解 SALE_PRICE 是否可以为空,以及这是否可能是问题所在,因为语法看起来正确,并且通过在 System.Web.Http.OData 命名空间中找到的 OData 对我有用。跨度>
  • 第一个示例中有一个杂散括号$filter=SALE_PRICE+Ne+null)& 是否有帮助?
  • 还有一个问题,如果我的属性故意设置为 nullable=true,那么在第二个示例中识别 null 关键字并且不生成错误?

标签: null odata skip


【解决方案1】:

上述解决方案应该可以正常工作,但请记住,正如 Tne 所指出的那样,运算符区分大小写。 所以一般来说,你可以使用过滤空值:

  • $filter=(SALE_PRICE+ne+null)
  • 或 $filter=not(SALE_PRICE+eq+null)

但是,在 SAP HANA 分析视图的特定情况下,不支持空值,因为可以在分析视图的建模级别在表列上定义过滤器的解决方法。解决方案在here 中进行了解释。

【讨论】:

    【解决方案2】:

    请注意,运算符区分大小写。 (使用ne 而不是Ne。)

    规范确实提到 “ISNULL 或 COALESCE 运算符未定义。相反,有一个可用于比较的空文字”(v3.0,URL 约定,第 5.1.2.4 节),这意味着它应该可以工作。

    确实,我试过Property ne null 没有任何问题。奇怪的是,您对not 的尝试虽然没有用,但应该奏效了。也许看看用空格替换+字符(可能是编码的),也许服务器很困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-09
      • 2016-02-04
      • 2016-11-22
      • 1970-01-01
      • 2014-09-11
      • 2014-02-15
      • 2021-02-03
      • 1970-01-01
      相关资源
      最近更新 更多