Есть ли способ отбрасывать возвращаемый массив XML в массив INT при использовании xpath в Postgres 9.5? По-видимому, я могу назначить его массиву INT перед его использованием, но я не могу понять, как использовать его непосредственно в предложении where. Ниже приведен пример того, как я его сейчас использую.Как передать xpath массив xml в массив int в Postgres
CREATE OR REPLACE FUNCTION people_get_by_ids(_xml XML)
RETURNS SETOF people AS
$$
DECLARE
_ids INT[] = (xpath('/ITEMS/ITEM/VALUE/text()', _xml));
BEGIN
RETURN QUERY
SELECT *
FROM people
WHERE id = ANY(_ids);
END
$$ LANGUAGE plpgsql STABLE;
Я бы тогда называть это как так
SELECT * FROM people_get_by_ids('<ITEMS><ITEM><VALUE>488</VALUE></ITEM><ITEM><VALUE>489</VALUE></ITEM></ITEMS>');
Было бы хорошо, если бы был простой и производительный способ не использовать _ids переменной и просто поставить XPATH часть в ИНЕКЕ.
мне нужно сделать это в нескольких местах и план по созданию функции, чтобы обернуть (xpath('/ITEMS/ITEM/VALUE/text()', _xml))
часть в
Спасибо! Я ранее пробовал кастинг, но делал :: varchar :: integer вместо :: varchar [] :: integer [] – Billy