从包含bytea-column中的XML数据的表中进行SELECT

时间:2011-03-08 09:18:58

标签: sql xml postgresql bytearray

我有一个PostgreSQL数据库,其中包含一个名为“data”的bytea列的表。 “data”包含大量XML数据。

我希望能够搜索特定的行,其中“data”中的XML元素名为<fw:MyID></fw:MyID>,其中包含“ID57841”。所以它看起来像<fw:MyID>ID57841</fw:MyID>

另外,我想从该列输出某些XML元素,比如<fw:MyPassword></fw:MyPassword>

我不能在数据库中写,只能读。我已经用Google搜索了很多答案,但是不能给我带来任何帮助。有人可以帮助我吗?

2 个答案:

答案 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

顺便说一下:闯入&lt;和&gt;在您的帖子中,您可以使用HTML实体&amp; lt;和&amp; gt;

答案 1 :(得分:0)

这应该有效:

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