我有一个PostgreSQL数据库,其中包含一个名为“data”的bytea列的表。 “data”包含大量XML数据。
我希望能够搜索特定的行,其中“data”中的XML元素名为<fw:MyID></fw:MyID>
,其中包含“ID57841”。所以它看起来像<fw:MyID>ID57841</fw:MyID>
。
另外,我想从该列输出某些XML元素,比如<fw:MyPassword></fw:MyPassword>
。
我不能在数据库中写,只能读。我已经用Google搜索了很多答案,但是不能给我带来任何帮助。有人可以帮助我吗?
答案 0 :(得分:1)
您应该能够使用convert_from()
将bytea列“动态”转换为文本列,然后对结果应用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
答案 1 :(得分:0)
这应该有效:
SELECT xpath('//fw:MyPassword/text()', CAST(convert_from(bytea_column, 'UTF-8') AS XML))
FROM your_table;