2012-11-21 47 views
14

OData是否指定是否要對字符串字段的篩選條件進行區分大小寫或不區分大小寫?

實施例:(來自文檔)

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

是這預計是大小寫敏感或不?

如果我想提供這兩種選擇,如何表達?還有就是可以像使用的tolower的()函數:

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

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

是不是有表達不區分大小寫的匹配更簡潔的方式?

+0

我在'Contact'實體的'EMailAddress1'字段上使用'tolower'出現以下錯誤:'無效'where'條件。實體成員正在調用無效的屬性或方法。「任何想法? –

回答

12

「eq」運算符應該區分大小寫。 tolower(或toupper)的使用是目前推薦的方式。

+0

我在'Contact'實體的'EMailAddress1'字段上使用'tolower'出現以下錯誤:'無效'where'條件。實體成員正在調用無效的屬性或方法。「任何想法? –

+0

怎麼樣?,需要例子。 – Mike

+0

@Mike - 下面是一個例子:/ people?$ filter = tolower(Name)eq tolower('JAmes') - 這應該會給你所有名字爲'James'的人(或Person對象)(不區分大小寫,詹姆斯','詹姆斯','JamES'等希望這會幫助:) – Yulian

0

我期望這取決於您的數據庫整理設置,因爲odata服務只是執行查詢。 如果Vitek的回答是正確的,那麼odata會對結果集進行一些後期查詢過濾,這應該很奇怪,對吧?

0

它不依賴於數據庫。即使您在敏感的情況下對數據庫執行查詢,OData也會執行他自己的額外過濾並過濾數據。