УС
Участник сообщества #59
5 февр. 2026 г., 12:04(изменён)
0
0

Поиск без учёта регистра в XQuery

Из чата сообщества

Александр, в Вашем примере '[myfield contains "+filter_val+"]' возможно ошибка? Т.к. и слева и справа от contains используются данные из myfield.

В конструкции [xxx contains yyy] у меня нет проблемы с yyy. Я успешно вычисляю yyy.

Есть проблема с xxx.

Чтобы выполнить поиск без учёта регистра, содержится ли yyy в xxx, я должен обе части xxx и yyy привести к одинаковому регистру, например всё к большим символам.

Сначала на JavaScript у меня успешно вычисляется yyy = ТЕСТ и подставляется в Конструкцию doc-contains($elem/id, '', '[myfield contains ТЕСТ]').

Затем эта Конструкция используется в запросе внутри XQuery.

У меня проблема в том, что не получается xxx привести тоже к большим символам как yyy = ТЕСТ.

Вместо '[myfield contains ТЕСТ]' я пробовал использовать '[upper-case(myfield) contains ТЕСТ]' '[upper(myfield) contains ТЕСТ]' и прочие варианты, но они не работают.

Контекст моей исходной задачи в том, что на доработанной странице "Поиск по порталу" мне нужно находить Сотрудников, у которых кастомное настраиваемое поле myfield содержит искомый текст введённый пользователем, например ТЕСТ. Моя реализация работает, но ищет с учётом регистра, а нужно без учёта регистра.

Поле myfield в Сотрудниках содержит символы разного регистра. Как правильно искать без учёта регистра в конструкции doc-contains($elem/id, '', '[myfield contains ТЕСТ]') ? 🙏

Или вместо данной конструкции doc-contains какую можно использовать конструкцию для поиска по кастомному полю? 🙏

arrObjects = ArraySelectAll( XQuery( "for $elem in collaborators where (doc-contains($elem/id, '', '[myfield contains ТЕСТ]')) order by $elem/fullname return $elem/Fields('id','fullname')" ) );

Чтобы ответить, необходимо войти в систему