2013-10-15 3 views
3

У меня есть веб-служба odata, которая возвращает несколько нулевых значений. Я хотел бы пропустить эти нулевые значения. Я пытался использовать Ne (не равно), чтобы фильтровать данные с нулевыми значениями:Как пропустить нулевые значения в ответе odata?

analyticView.xsodata/analyticView?$select=QUANTITY_SOLD,SALE_PRICE&$filter=SALE_PRICE+Ne+null)&$format=json 

, и я получаю следующее сообщение об ошибке:

"Illegal operation 'Ne' at position 11." 

Я пытался также объединить не оператор с оператором эк таким образом:

analyticView.xsodata/analyticView?$select=QUANTITY_SOLD,SALE_PRICE&$filter=not(SALE_PRICE+eq+null)&$format=json 

я получаю сообщение об ошибке, говорящее:

value: "No property 'null' exists in type ... 

Я использую аналитическое представление SAP HANA в качестве источника данных, но я думаю, что проблема не зависит от поставщика. Итак, что делать, чтобы пропустить нулевые значения?

+0

Как определяется 'SALE_PRICE' в классе? – qujck

+0

, если вы понимаете свой вопрос, вот как SALE_PRICE определяется в метаданных поставщика odata. MedAli

+1

Я думаю, я пытаюсь понять если SALE_PRICE имеет значение NULL, и если это может быть проблемой, потому что синтаксис выглядит корректно и работает для меня здесь через OData, найденную в пространстве имен System.Web.Http.OData. – qujck

ответ

4

Вышеупомянутые решения должны работать нормально, имея в виду, что операторы чувствительны к регистру, как указано Tne. Таким образом, в общем, чтобы отфильтровать нулевые значения, которые вы можете использовать:

  • $ фильтр = (SALE_PRICE + пе + нуль)
  • или $ отфильтровывать = нет (SALE_PRICE + эк + нуль)

Однако в конкретном случае аналитических представлений SAP HANA нулевое значение не поддерживается, в качестве обходного пути фильтры могут быть определены в столбце таблицы на уровне моделирования аналитического представления. Решение объяснено here.

2

Обратите внимание, что операторы чувствительны к регистру. (Используйте ne вместо Ne.)

спецификации упоминает, что «ISNULL или COALESCE операторы не определены. Вместо этого, есть пустой литерал, который может быть использован при сравнении» (v3.0, URL конвенций, раздел 5.1.2.4), что означает, что он должен работать.

Действительно, я пробовал Property ne null без каких-либо проблем. Странно, что ваша попытка с not, хотя и не была полезной, должна была сработать. Возможно, посмотрите на замену символов + пробелами (возможно, закодированными), возможно, сервер запутался.

Смежные вопросы