SELECT из таблицы, содержащей XML-данные в bytea-столбце
У меня есть база данных PostgreSQL, содержащая таблицу со столбцом типа bytea с именем "data". "Данные" содержат большие XML-данные.
Я хотел бы иметь возможность искать конкретные строки, где есть "XML-элемент" в "данных" под названием <fw:MyID></fw:MyID>
который содержит "ID57841". Так это будет выглядеть <fw:MyID>ID57841</fw:MyID>
,
Также я хотел бы вывести некоторые XML-элементы из этого столбца, скажем, <fw:MyPassword></fw:MyPassword>
,
Я не могу писать в базу данных, только читать. Я много гуглил после ответов, но не могу придумать ничего, что мне поможет. Может кто-нибудь, пожалуйста, помогите мне?
1 ответ
Вы должны быть в состоянии преобразовать столбец bytea в текстовый столбец "на лету", используя convert_from()
и затем примените функцию xpath() к результату.
Что-то вроде:
ВЫБРАТЬ xpath('/fw:MyPassword/text()', convert_from(bytea_column, 'UTF-8')) FROM your_table;
Скорее всего, вам потребуется указать пространство имен в качестве третьего параметра.
Проверьте руководство для деталей относительно этого:
http://www.postgresql.org/docs/current/static/functions-xml.html
Кстати: чтобы добавить <и> в ваш пост, вы можете использовать HTML-объекты & lt; и & gt;
Это должно работать:
SELECT xpath('//fw:MyPassword/text()', CAST(convert_from(bytea_column, 'UTF-8') AS XML))
FROM your_table;