如何在odata响应中跳过空值?

Moh*_*OUI 5 null skip odata

我有一个odata Web服务返回一些空值.我想跳过这些空值.我试图使用Ne(不等于)运算符来过滤具有空值的数据:

analyticView.xsodata/analyticView?$select=QUANTITY_SOLD,SALE_PRICE&$filter=SALE_PRICE+Ne+null)&$format=json
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

"Illegal operation 'Ne' at position 11."
Run Code Online (Sandbox Code Playgroud)

我还尝试以这种方式将Not运算符与eq运算符组合在一起:

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

我一直收到一条错误消息:

value: "No property 'null' exists in type ...
Run Code Online (Sandbox Code Playgroud)

我使用SAP HANA分析视图作为数据源,但我认为该问题不依赖于供应商.那么,如何跳过空值呢?

Moh*_*OUI 10

上述解决方案应该可以正常工作,因为Tne指出操作符区分大小写.因此,通常要过滤空值,您可以使用:

  • $滤波器=(SALE_PRICE + NE +空)
  • 或$ filter = not(SALE_PRICE + eq + null)

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


tne*_*tne 5

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

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

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