Odata v2过滤常用指令

不积跬步,无以至千里。 不积小流,无以成江海。

最近在使用Odata,从官网上摘录一些常用的Odta v2指令记录一下。

运算符

Operator Description Example
Logical Operators 逻辑操作
Eq Equal - 等于 /Suppliers?$filter=Address/City eq ‘Redmond’
Ne Not equal - 不等于 /Suppliers?$filter=Address/City ne ‘London’
Gt Greater than - 大于 /Products?$filter=Price gt 20
Ge Greater than or equal -大于或等于 /Products?$filter=Price ge 10
Lt Less than - 小于 /Products?$filter=Price lt 20
Le Less than or equal - 小于或等于 /Products?$filter=Price le 100
And Logical and - 逻辑与 /Products?$filter=Price le 200 and Price gt 3.5
Or Logical or - 逻辑或 /Products?$filter=Price le 3.5 or Price gt 200
Not Logical negation - 逻辑非 /Products?$filter=not endswith(Description,’milk’)
Arithmetic Operators 算术操作
Add Addition - 加 /Products?$filter=Price add 5 gt 10
Sub Subtraction -减 /Products?$filter=Price sub 5 gt 10
Mul Multiplication - 乘 /Products?$filter=Price mul 2 gt 2000
Div Division - 除 /Products?$filter=Price div 2 gt 4
Mod Modulo - 模 /Products?$filter=Price mod 2 eq 0
Grouping Operators
( ) Precedence grouping /Products?$filter=(Price sub 5) gt 10

函数

Function Example
String Functions
bool substringof(string po, string p1) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=substringof(‘Alfreds’, CompanyName) eq true
bool endswith(string p0, string p1) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=endswith(CompanyName, ‘Futterkiste’) eq true
bool startswith(string p0, string p1) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=startswith(CompanyName, ‘Alfr’) eq true
int length(string p0) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=length(CompanyName) eq 19
int indexof(string p0, string p1) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=indexof(CompanyName, ‘lfreds’) eq 1
string replace(string p0, string find, string replace) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=replace(CompanyName, ‘ ‘, ‘’) eq ‘AlfredsFutterkiste’
string substring(string p0, int pos) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=substring(CompanyName, 1) eq ‘lfreds Futterkiste’
string substring(string p0, int pos, int length) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=substring(CompanyName, 1, 2) eq ‘lf’
string tolower(string p0) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=tolower(CompanyName) eq ‘alfreds futterkiste’
string toupper(string p0) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=toupper(CompanyName) eq ‘ALFREDS FUTTERKISTE’
string trim(string p0) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=trim(CompanyName) eq ‘Alfreds Futterkiste’
string concat(string p0, string p1) https://services.odata.org/Northwind/Northwind.svc/Customers?$filter=concat(concat(City, ‘, ‘), Country) eq ‘Berlin, Germany’
Date Functions
int day(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=day(BirthDate) eq 8
int hour(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=hour(BirthDate) eq 0
int minute(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=minute(BirthDate) eq 0
int month(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=month(BirthDate) eq 12
int second(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=second(BirthDate) eq 0
int year(DateTime p0) https://services.odata.org/Northwind/Northwind.svc/Employees?$filter=year(BirthDate) eq 1948
Math Functions
double round(double p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=round(Freight) eq 32d eq 32)
decimal round(decimal p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=round(Freight) eq 32
double floor(double p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=round(Freight) eq 32d eq 32)
decimal floor(decimal p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=floor(Freight) eq 32
double ceiling(double p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=ceiling(Freight) eq 33d eq 33)
decimal ceiling(decimal p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=floor(Freight) eq 33
Type Functions
bool IsOf(type p0) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=isof('NorthwindModel.Order')
bool IsOf(expression p0, type p1) https://services.odata.org/Northwind/Northwind.svc/Orders?$filter=isof(ShipCountry, ‘Edm.String’)

格式

$format Value Response Media Type
Atom application/atom+xml
Xml application/xml
Json application/json
Any other IANA-defined content type Any IANA-defined content type
A service-specific value indicating a format specific to the specific OData service Any IANA-defined content type

Examples

https://services.odata.org/OData/OData.svc/Products?$format=atom

odata分页

Examples

1
https://services.odata.org/OData/OData.svc/Products?$top=pageSize&skip=(page-1)*pageSize&$inlinecount=allpages
  • $top

    表示取多少条数据

  • $skip

    表示跳过多少条数据

  • $inlinecount=allpages

    返回总记录数 __count

文章作者: HJW
文章链接: https://hjwjw.github.io/posts/34f6a5f4/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HJW's Blog