odata查询-是否有方法添加一个;“和假”;过滤

odata查询-是否有方法添加一个;“和假”;过滤,odata,Odata,odata查询-是否有方法向筛选器添加“and false” 这是一个连接到SAP系统的查询 假设我的url是: /PlannerGrpSet?$top=50和$filter=(Werks eq'3000')和$select=* 我想做: /PlannerGrpSet?$top=50和$filter=(Werks eq'3000'和false)和$select=* 不要问我为什么,我们有一个工具,它正在转换我们生成的一些复杂sql,在sql中我们做0=1表示不返回数据。是的,我知道我们疯了 只需

odata查询-是否有方法向筛选器添加“and false”

这是一个连接到SAP系统的查询

假设我的url是:

/PlannerGrpSet?$top=50和$filter=(Werks eq'3000')和$select=*

我想做:

/PlannerGrpSet?$top=50和$filter=(Werks eq'3000'和false)和$select=*

不要问我为什么,我们有一个工具,它正在转换我们生成的一些复杂sql,在sql中我们做0=1表示不返回数据。是的,我知道我们疯了

只需添加和false即可得到:

远程服务器返回错误:(500)内部服务器错误

关于我如何得到我想要的东西有什么想法吗?再次强调,不要寻找“不要那样做”。另外,我也不希望尝试像Werks eq“3000”和Werks eq“3001”这样的操作,理想情况下,我不希望随机选择一个列并执行类似操作。

for
$filter
表达式允许使用原始文本(例如,
false
)位于
表达式的右侧。所以,看起来您遇到了服务背后OData实现的缺陷或限制

下面是一个在
$filter
中使用文本
false
值的示例

http://services.odata.org/V4/(S(ztoosdlp5wrqdiv233gmrqys))/TripPinServiceRW/People?$filter=UserName eq 'russellwhyte' and false

您可以尝试另一个肯定会失败的逻辑表达式。例如,
0 eq 1

我认为您是正确的,这是SAP后端的一个限制。您知道oData的2.0版是否也支持基本文本吗?版本2有演示服务吗?对不起,有额外的问题。我确实尝试了0 eq 1,但也遇到了错误。根据(版本2规范)第2.2.3.6.1.1节“通用表达式语法”,布尔文字在
$filter
中是合法的。但是
boolLiteralExpression
规则的定义是这样的:“数据服务可能支持表示布尔值的文本表达式。”这意味着它是可选的。