ODATA V4如何过滤排除a、b、c全为0的数据?
OData 过滤:仅排除a、b、c全为0的记录
要实现保留a、b、c不全为0的所有数据(仅排除三者同时为0的情况),正确的OData过滤表达式是:
?$filter=not (a eq 0 and b eq 0 and c eq 0)
为什么之前的表达式不符合需求?
你之前使用的$filter=a ne 0 and b ne 0 and c ne 0,逻辑是要求三个字段必须全部不为0,这和你的需求完全相悖——它会把只要有一个字段为0的记录都过滤掉,而你需要的是只剔除三者全为0的情况。
逻辑验证
这个表达式会保留所有符合你要求的记录:
- a=1, b=0, c=0
- a=1, b=1, c=0
- a=0, b=1, c=0
- a=0, b=0, c=1
- 三个字段均不为0的记录
只有当a、b、c同时为0时,才会被过滤,完全匹配你的需求。在服务端完成过滤后,能有效减少后续代码处理的数据量,达到你所说的平均每个请求节省9秒处理时间的效果。
内容的提问来源于stack exchange,提问作者Pretpark
相关产品推荐
相关产品推荐

