odatas microsoft odata

microsoft - odatas



Opciones de filtro OData(manejar valores nulos o vacĂ­os) (1)

Puedes comparar a null usando el operador de igualdad de esta manera:

$filter=CustomerID eq null

En su caso la consulta degeneraría a algo como:

$filter=(CustomerID eq null) or (null eq null)

Lo que debería funcionar, pero no es muy bonito. ¿Consideraste eliminar completamente el predicado en tal caso?

Estamos usando la opción de consulta del sistema $ filter en OData para ejecutar filtros donde el valor del filtro se envía en tiempo de ejecución.

Como ejemplo, la URL de OData sería así:

http://services.odata.org/Northwind/Northwind.svc/Customers ? $ filter = CustomerID eq @InCustomerID y Country eq @InCountry

donde @InCustomerID & @InCountry son los valores de entrada para el filtro igual.

En el tiempo de ejecución, cuando el usuario ingresa algún valor para ID de cliente (por ejemplo, ''ABCD''), reemplazaremos @InCustomerID por ''ABCD''

En tiempo de ejecución la consulta sería la siguiente:

http://services.odata.org/Northwind/Northwind.svc/Customers ? $ filter = CustomerID eq ''ABCD'' y Country eq ''US''

En el caso anterior, el usuario ha ingresado los siguientes valores: CustomerID => ''ABCD'' y País => ''US''

Mi pregunta es sobre el manejo de valores nulos en OData $ filter. Si el usuario no ingresa ningún valor para CustomerID, queremos seleccionar a todos los clientes de un país específico.

En caso de sql esto sería algo como:

seleccione * de Clientes donde ((CustomerID = @InCustomerID) o (@CustomerID es nulo)) y (País = @ Country).

Esencialmente, cómo manejar valores nulos o vacíos para que el predicado específico en la condición lógica siempre sea verdadero.

¿El filtrado OData habilita esta opción?