Я пытаюсь запросить столбец xml, используя выражение IN. Я не нашел собственного способа выполнения такого запроса в XQuery, поэтому попробовал два обходных пути:
Реализуйте запрос IN как объединение OR следующим образом:
WHERE Data.exist('/Document/ParentKTMNode[text() = sql:variable("@Param1368320145") or
text() = sql:variable("@Param2043685301") or ...
Реализуйте запрос IN с помощью метода String fn: contains (...) следующим образом:
WHERE Data.exist('/Document/Field2[fn:contains(sql:variable("@Param1412022317"), .)]') = 1
Где заданным параметром является (длинная) строка со значениями, разделенными "|"
Проблема в том, что Версия 1. не работает более чем с 50 аргументами. Сервер выбрасывает исключение нехватки памяти. Версия 2. работает, но очень, очень медленно.
У кого-нибудь есть идея? Чтобы сформулировать проблему более полно: учитывая список значений любого собственного типа sql, выберите все строки, столбец xml которых имеет одно из указанных значений в определенном поле в xml.