2012-11-21 26 views
14

OData có chỉ định liệu điều kiện lọc trên trường chuỗi có được đánh giá phân biệt chữ hoa chữ thường hay phân biệt chữ hoa chữ thường hay không?

Ví dụ: (từ các tài liệu)

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

Đây có phải là dự kiến ​​sẽ được trường hợp nhạy cảm hay không?

Nếu tôi muốn cung cấp cả hai tùy chọn, làm thế nào điều này có thể được thể hiện? Có một ToLower() chức năng có thể được sử dụng như:

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

hoặc

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

Không phải là có một cách ngắn gọn hơn để diễn tả phù hợp với case-insensitive?

+0

Tôi nhận được lỗi sau bằng cách sử dụng 'tolower' trên trường' EMailAddress1' của thực thể 'Liên hệ':' Không hợp lệ 'trong đó' điều kiện '. Thành viên thực thể đang gọi thuộc tính hoặc phương thức không hợp lệ.' Bất kỳ ý tưởng nào? –

Trả lời

12

Toán tử "eq" được cho là phân biệt chữ hoa chữ thường. Việc sử dụng tolower (hoặc toupper) là cách được khuyến nghị hiện tại.

+0

Tôi nhận được lỗi sau bằng cách sử dụng 'tolower' trên trường' EMailAddress1' của thực thể 'Contact':' Invalid 'trong đó' condition '. Thành viên thực thể đang gọi thuộc tính hoặc phương thức không hợp lệ.' Bất kỳ ý tưởng nào? –

+0

Xin vui lòng ?, ví dụ cần. – Mike

+0

@Mike - Đây là ví dụ:/people? $ Filter = tolower (Tên) eq tolower ('JAmes') - điều này sẽ cung cấp cho bạn tất cả mọi người (hoặc đối tượng Person) có tên là 'James' (phân biệt chữ hoa chữ thường, có thể là ' JAMES ',' james ',' JamES ', v.v. Hy vọng điều này sẽ giúp :) – Yulian

0

Tôi mong đợi điều này phụ thuộc vào cài đặt đối chiếu cơ sở dữ liệu của bạn, vì dịch vụ odata chỉ thực hiện truy vấn. Nếu câu trả lời của Vitek là chính xác, thì odata đang thực hiện một số truy vấn bài lọc trên tập kết quả, và điều đó sẽ lạ, phải không?

0

Nó không phụ thuộc vào cơ sở dữ liệu. Ngay cả khi bạn thực hiện truy vấn đối với cơ sở dữ liệu trong trường hợp theo cách nhạy cảm thì OData sẽ tự lọc thêm và lọc dữ liệu của bạn.

Các vấn đề liên quan