Разработка
24
Май
0

Подстановочные операторы SQL в FetchXML

Предположим Вам необходимо составить Fetch для выборки имен, начинающихся с А до Д. Если решать задачу в «лоб» и составить запрос через Расширенный поиск, то результат был бы примерно таким:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="contact">
    <attribute name="firstname" />
    <attribute name="contactid" />
    <order attribute="fullname" descending="false" />
    <filter type="and">
      <condition attribute="firstname" operator="like" value="А%" />
      <condition attribute="firstname" operator="like" value="Б%" />
      <condition attribute="firstname" operator="like" value="В%" />
      <condition attribute="firstname" operator="like" value="Г%" />
      <condition attribute="firstname" operator="like" value="Д%" />
    </filter>
  </entity>
</fetch>

А если их будет 20? 🙂 Выглядит не очень эстетично 🙂 К счастью в FetchXML можно использовать так называемые символы-шаблоны SQL. Если искать по содержимому или с начала строки, то в фетче Вы можете заметить оператор like. Такой же like будет использоваться и SQL запросе в БД, а значит вместе с ним Вы можете использовать и следующие символы-шаблоны:

Символ-шаблон Описание Пример
% Любая строка, содержащая ноль или более символов. %компьютер%
Выполняет поиск и выдает все названия, содержащие слово «компьютер».
_ (подчеркивание) Любой одиночный символ. __Д%
Название содержит третьим символом «Д».
[ ] Любой одиночный символ, содержащийся в диапазоне ([a-f]) или наборе ([abcdef]). [Л-С]омов
Выполняет поиск и выдает все фамилии на «омов» и начинающиеся на любую букву в промежутке от Л до С.
[^] Любой одиночный символ, не содержащийся в диапазоне ([^a-f]) или наборе ([^abcdef]). ив[^а]% — выполняет поиск фамилий, начинающиеся на «ив», в которых третья буква отличается от «а».
[^A-Z0-9] % — в название начинается не с цифры и не с буквы.

Для выше приведенного примера, запрос был бы таким:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="contact">
    <attribute name="firstname" />
    <attribute name="contactid" />
    <order attribute="fullname" descending="false" />
    <filter type="and">
      <condition attribute="firstname" operator="like" value="[А-Д]%" />
    </filter>
  </entity>
</fetch>

Примечания:

  • Задать такие значения через интерфейс не получится, поскольку CRM их экранирует.
  • Такой фетч можно програмно или через сторонние утилиты задать для Представлений CRM, но после этого их нельзя будет редактировать через Интерфейс.


Комментарии (0)

*

code