Выбор непустых ячеек из списка SharePoint с CAML

Недавно понадобилось написать CAML-запрос для выбора элементов списка с непустыми значениями столбца (ячейки). Нужно было выбрать все записи, в которых столбец OS имел значение «Windows», а столбец UserName был не пустым. Не будучи асом в CAML’е, сперва решил попробовать использование конструкции  <Neq> и <Value Type=’Text’></Value>, т.е. некий аналог  var != «». Но результат оказался не очень.

<Where>
        <And>
            <Eq>
                    <FieldRef Name="OS " />
                    <Value Type='Text'>Windows</Value>
            </Eq>
            <Neq>
                    <FieldRef Name="UserName />
                    <Value Type='Text'></Value>
            </Neq>
        </And>
</Where>

 

В итоге, заглянув в документацию CAML,  обнаружил конструкцию <IsNotNull>. Ее использование оказалось правильным решением:

<Where>
        <And>
            <Eq>
                    <FieldRef Name="OS " />
                    <Value Type='Text'>Windows</Value>
            </Eq>
            <IsNotNull>
                    <FieldRef Name="UserName" />
            </IsNotNull>
        </And>
</Where>

 

Этот запрос возвращает элементы списка, в которых OS равно «Windows», а UserName не пусто.

 

Если же вам понадобится выбрать ячейки с пустым значением UserName, то на помощь конструкция  <IsNull>.

<Where>
        <And>
            <Eq>
                    <FieldRef Name="OS " />
                    <Value Type='Text'>Windows</Value>
            </Eq>
            <IsNull>
                    <FieldRef Name="UserName" />
            </IsNull>
        </And>
</Where>

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *