6

我有一个返回一些空值的 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 分析视图作为数据源,但我认为这个问题与供应商无关。那么,如何跳过空值呢?

4

2 回答 2

13

上面的解决方案应该可以正常工作,记住操作符是区分大小写的,正如 Tne 所指出的那样。因此,通常要过滤空值,您可以使用:

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

但是,在 SAP HANA 分析视图的特定情况下,不支持空值,作为一种解决方法,可以在分析视图的建模级别在表列上定义过滤器。解决方案在这里解释。

于 2013-10-16T00:03:06.017 回答
6

请注意,运算符区分大小写。(使用ne代替Ne。)

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

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

于 2013-10-15T15:43:29.237 回答