Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OData筛选器选项(处理空值或空值)_Odata - Fatal编程技术网

OData筛选器选项(处理空值或空值)

OData筛选器选项(处理空值或空值),odata,Odata,我们在OData中使用$filter系统查询选项来执行过滤器,过滤器值在运行时发送 例如,OData URL如下所示: $filter=CustomerID eq null ?$filter=在国家/地区内,在国家/地区内的客户ID均衡器和国家/地区均衡器 其中@InCustomerID&@incontry是相等过滤器的输入值 在运行时,当用户为客户ID输入一些值时(比如“ABCD”),我们将用“ABCD”替换@InCustomerID 在运行时,查询如下所示: ?$filter=客户ID等式

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

例如,OData URL如下所示:

$filter=CustomerID eq null
?$filter=在国家/地区内,在国家/地区内的客户ID均衡器和国家/地区均衡器

其中@InCustomerID&@incontry是相等过滤器的输入值

在运行时,当用户为客户ID输入一些值时(比如“ABCD”),我们将用“ABCD”替换@InCustomerID

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

?$filter=客户ID等式'ABCD'和国家/地区等式'US'

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

我的问题是关于OData$filter中空值的处理。如果用户未为CustomerID输入任何值,则我们希望选择特定国家/地区的所有客户

在sql情况下,这类似于:

$filter=(CustomerID eq null) or (null eq null)
从客户中选择*,其中((CustomerID=@incustomeId)或(@CustomerID为null))和(Country=@Country)

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


OData筛选是否启用此选项?

您可以使用以下等式运算符将其与null进行比较:

$filter=CustomerID eq null
在您的情况下,查询将退化为以下内容:

$filter=(CustomerID eq null) or (null eq null)
这应该管用,但不是很好。
在这种情况下,你是否考虑完全删除谓词?

我不同意一个干净的解决方案。但是我们受到限制,因为过滤器是静态形成的,在运行时,我们可能会为某些过滤器输入获取空值。在这种情况下,没有任何简单的选择。要完全删除谓词是很困难的,因为这需要对url进行一些分析,并删除空谓词