2011-03-08 106 views
1

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

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

此外,我想输出该列中的某些XML元素,如<fw:MyPassword></fw:MyPassword>

我无法在数据库中写入,只能读取。我已经回答了很多Google搜索引擎,但不能提供任何帮助我的东西。有人可以帮帮我吗?

+0

您可以使用反引号字符来逃避标记 – 2011-03-08 11:16:59

回答

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

BTW:到inlcude在您的文章<和>,您可以使用HTML实体& LT;和& gt;