将存储在XML中的id与存储在表

时间:2017-02-17 14:21:58

标签: xml postgresql extract

我将XML存储在名为tbl_products的表中,我想从此XML <id>中提取ID,如果ID出现在另一个表中,则返回ID。

我知道这可能措辞严厉,但我发现很难解释。

SELECT *, cast(xpath('/objects/id/text()', objectsXML) as text[])
FROM "productData".tbl_products
WHERE personId = 314
AND EXISTS (SELECT * FROM prids)
LIMIT 15

示例XML

 <objects>
     <id>
         521GT67
     </id>
 </objects>

'521GT67'是否出现在表tbl_products中的任何位置?

所以我想检查第二个表中的ID是否出现在任何地方。

第二个表包含每列的产品,并且ID在行中向下。

此语句不返回任何内容,但我确信它应该返回至少10行。 无论

如何,它的行为都是一样的
AND EXISTS (SELECT * FROM prids)

我想要的输出只是第二个表格(在任何一列)中出现的id列表

基于@G_H的评论,这似乎很合乎逻辑。 我现在有以下

SELECT *, cast(xpath('/objects/id/text()', objectsXML) as text[])
FROM "productData".tbl_products p
WHERE personId = 314
AND EXISTS (SELECT ids FROM prids r WHERE p.cast(xpath('/objects/id/text()',    objectsXML) = r.ids)
LIMIT 15

返回错误

ERROR:  syntax error at end of input
LINE 5: LIMIT 15

似乎更有希望

0 个答案:

没有答案