Мы используем параметр системного запроса $ filter в OData для выполнения фильтров, в которых значение фильтра отправляется во время выполнения.
В качестве примера URL OData будет выглядеть так:
http://services.odata.org/Northwind/Northwind.svc/Customers ? $ Filter = CustomerID eq @InCustomerID и Country eq @InCountry
где @InCustomerID и @InCountry - входные значения для равного фильтра.
Во время выполнения, когда пользователь вводит какое-либо значение для идентификатора клиента (например, «ABCD»), мы заменяем @InCustomerID на «ABCD»
Во время выполнения запрос будет выглядеть следующим образом:
http: // services.odata.org/Northwind/Northwind.svc/Customers?$filter=CustomerID eq 'ABCD' и Country eq 'US'
В приведенном выше случае пользователь ввел следующие значения: CustomerID => ' ABCD 'и Country =>' US '
Мой вопрос касается обработки нулевых значений в фильтре OData $. Если пользователь не вводит никакого значения для CustomerID, тогда мы хотим выбрать всех клиентов из определенной страны.
В случае sql это будет примерно так:
выберите * из клиентов, где ((CustomerID = @InCustomerID) или (@CustomerID имеет значение null)) и (Country = @Country).
По сути, как обрабатывать нулевые или пустые значения, чтобы конкретный предикат в логическом условии всегда был истинным.
Включает ли фильтрация OData эту опцию?