gpt4 book ai didi

OData 过滤器选项(处理 null 或空值)

转载 作者:行者123 更新时间:2023-12-03 11:23:28 26 4
gpt4 key购买 nike

我们在 OData 中使用 $filter 系统查询选项来执行过滤器,其中过滤器值在运行时发送。

例如,OData URL 将如下所示:

http://services.odata.org/Northwind/Northwind.svc/Customers?$filter=CustomerID eq @InCustomerID and Country eq @InCountry



其中@InCustomerID 和@InCountry 是相等过滤器的输入值。

在运行时,当用户为客户 ID 输入某个值(例如“ABCD”)时,我们会将 @InCustomerID 替换为“ABCD”

在运行时,查询将如下所示:

http://services.odata.org/Northwind/Northwind.svc/Customers?$filter=CustomerID eq 'ABCD' and Country eq 'US'



在上述情况下,用户输入了以下值:CustomerID => 'ABCD' and Country => 'US'

我的问题是关于在 OData $filter 中处理空值。如果用户没有为 CustomerID 输入任何值,那么我们要选择来自特定国家/地区的所有客户。

在 sql 情况下,这将类似于:

select * from Customers where ((CustomerID = @InCustomerID) or (@CustomerID is null)) and (Country = @Country).



本质上如何处理空值或空值,以便逻辑条件中的特定谓词始终为真。

OData 过滤是否启用此选项?

最佳答案

您可以使用这样的相等运算符与 null 进行比较:

$filter=CustomerID eq null

在您的情况下,查询将退化为:
$filter=(CustomerID eq null) or (null eq null)

哪个应该有效,但不是很好。
在这种情况下,您是否考虑过完全删除谓词?

关于OData 过滤器选项(处理 null 或空值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com