27

OData 是否指定字符串字段上的过滤条件是区分大小写还是不区分大小写?

示例:(来自文档)

/Suppliers?$filter=Address/City eq 'Redmond' 

这是否需要区分大小写?

如果我想提供两种选择,如何表达?有一个 tolower() 函数可以像这样使用:

/Suppliers?$filter=tolower(Address/City) eq 'redmond'

或者

/Suppliers?$filter=tolower(Address/City) eq tolower('Redmond')

难道没有更简洁的方式来表达不区分大小写的匹配吗?

4

3 回答 3

26

“eq”运算符应该区分大小写。使用 tolower(或 toupper)是目前推荐的方法。

于 2012-11-21T18:26:07.770 回答
1

我希望这取决于您的数据库排序规则设置,因为 odata 服务只是执行查询。如果 Vitek 的回答是正确的,那么 odata 正在对结果集进行一些查询后过滤,这应该很奇怪,对吧?

于 2013-09-24T08:05:50.190 回答
0

它不依赖于数据库。即使您以不区分大小写的方式对数据库执行查询,OData 也会自己进行额外的过滤并过滤掉您的数据。

于 2015-01-13T10:48:14.933 回答