2012-11-21 16 views
14

Czy OData określa, czy warunki filtrowania w polach łańcucha mają być oceniane z uwzględnieniem wielkości liter i czy bez rozróżniania wielkości liter?

Przykład: (z dokumentami)

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

jest to oczekiwano przypadku wrażliwych czy nie?

Jeśli chcę zaoferować obie opcje, w jaki sposób można to wyrazić? tam

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

lub

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

nie jest bardziej zwięzły sposób wyrazić na wielkość liter: Jest to funkcja tolower(), które mogą być używane jak?

+0

Otrzymuję następujący błąd przy użyciu 'tolower' na polu' EMailAddress1' jednostki 'Contact':' Invalid 'where' condition. Członek jednostki wywołuje nieprawidłową właściwość lub metodę. "Jakieś pomysły? –

Odpowiedz

12

Operator "eq" ma rozróżniać wielkie i małe litery. Używanie tolower (lub toupper) jest obecnie zalecanym sposobem na to.

+0

Otrzymuję następujący błąd przy użyciu 'tolower' w polu' EMailAddress1' jednostki 'Contact':' Invalid 'where' condition. Członek jednostki wywołuje nieprawidłową właściwość lub metodę. "Jakieś pomysły? –

+0

Jak proszę ?, potrzebujesz przykładu. – Mike

+0

@Mike - Oto przykład:/people? $ Filter = tolower (Name) eq tolower ('JAmes') - powinno to dać ci wszystkie osoby (lub obiekty Person), których nazwa brzmi "James" (bez względu na wielkość liter, może być ' JAMES ',' james ',' JamES ', itp. Mam nadzieję, że to pomoże :) – Yulian

0

Spodziewam się, że jest to zależne od ustawienia sortowania bazy danych, ponieważ usługa odata wykonuje właśnie zapytanie. Jeśli odpowiedź Vitka jest poprawna, to odata wykonuje filtrowanie zapytań po zestawie wyników, co powinno być dziwne, prawda?

0

To nie zależy od bazy danych. Nawet jeśli wykonasz zapytanie w stosunku do bazy danych w przypadku wrażliwego sposobu, wówczas OData wykona własne dodatkowe filtrowanie i odfiltrowuje twoje dane.