SELECT из таблицы, содержащей XML-данные в bytea-столбце - PullRequest
1 голос
/ 08 марта 2011

У меня есть база данных PostgreSQL, содержащая таблицу со столбцом типа bytea с именем «data».«data» содержит большие XML-данные.

Я хотел бы иметь возможность искать определенные строки, где в «data» есть XML-элемент с именем <fw:MyID></fw:MyID>, содержащий «ID57841».Так что это будет выглядеть как <fw:MyID>ID57841</fw:MyID>.

Кроме того, я хотел бы вывести определенные XML-элементы из этого столбца, скажем <fw:MyPassword></fw:MyPassword>.

Я не могу записать в базу данных, толькочитать.Я много гуглил после ответов, но не могу придумать ничего, что мне поможет.Может кто-нибудь помочь мне?

1 Ответ

1 голос
/ 08 марта 2011

Вы должны быть в состоянии преобразовать столбец bytea в текстовый столбец "на лету", используя convert_from(), а затем применить функцию xpath () к результату.

Что-то вроде:

SELECT xpath('/fw:MyPassword/text()', convert_from(bytea_column, 'UTF-8'))
FROM your_table;

Скорее всего, вам потребуется указать пространство имен в качестве третьего параметра.Проверьте руководство для деталей относительно этого:http://www.postgresql.org/docs/current/static/functions-xml.html#FUNCTIONS-XML-PROCESSING

Кстати: чтобы добавить <и> в ваш пост, вы можете использовать HTML-сущности <и>

...