OData에서 $ filter 시스템 쿼리 옵션을 사용하여 런타임에 필터 값이 전송되는 위치에서 필터를 실행합니다.OData 필터 옵션 (null 값 또는 빈 값 처리)
예로 하나로, OData URL은 다음과 같습니다
http://services.odata.org/Northwind/Northwind.svc/Customers $ 필터 = CustomerID를 EQ @InCustomerID 및 국가 EQ @InCountry @InCustomerID & @InCountry가 입력
? equal 필터의 값. 런타임에
사용자가 고객 ID에 대한 몇 가지 값 (예를 들어 'ABCD') 우리가 'ABCD'
하여 @InCustomerID을 대체 할 들어갑니다 다음과 같이 런타임시 쿼리는 다음과 같습니다
http://services.odata.org/Northwind/Northwind.svc/Customers $ 필터는 사용자가 다음 값을 입력 한 상기 경우 = CustomerID를 당량 'ABCD'와 국제 당량 'US에게'
:의 CustomerID => 'ABCD'와 국가 => 'US'
을제 질문은 OData $ 필터의 null 값 처리에 관한 것입니다. 사용자가 CustomerID 값을 입력하지 않으면 특정 국가의 모든 고객을 선택하려고합니다.
SQL 경우 이것은 같은 것이다 : 고객
선택 * 어디에 ((CustomerID를 = @InCustomerID) 또는 (@CustomerID가 null))와 (나라 = @Country).
사실 논리적 조건의 특정 조건자가 항상 참이되도록 null 값이나 빈 값을 처리하는 방법.
OData 필터링을 사용하면이 옵션을 사용할 수 있습니까? 쿼리가 같은 것으로 변질 것입니다 귀하의 경우에는
$filter=CustomerID eq null
을 :
나는 깨끗한 해결책이 아니다. 그러나 필터가 정적으로 형성되고 런타임에 특정 필터 입력에 대해 null 값을 가져올 수 있으므로 제한적입니다. 이러한 시나리오에서는 쉬운 대안이 없습니다. 술어를 완전히 제거하기가 어려울 것입니다. 그 이유는 URL을 파싱하고 null 술어를 제거해야하기 때문입니다. – Venki
(null eq null)이 효과가 있습니까? –