Sql 用于搜索所有子节点的查询中的Xpath
我在用postgres。我的数据是xml格式的。我想写一个查询来获取匹配的记录。该记录可能位于任何子元素中。我需要在查询中使用XPath的结果 样本数据:Sql 用于搜索所有子节点的查询中的Xpath,sql,xml,postgresql,xpath,Sql,Xml,Postgresql,Xpath,我在用postgres。我的数据是xml格式的。我想写一个查询来获取匹配的记录。该记录可能位于任何子元素中。我需要在查询中使用XPath的结果 样本数据: <book category="Cooking"> <title lang="en">XQuery Kick Start</title> <author>Leonard Richardson</author> <aut
<book category="Cooking">
<title lang="en">XQuery Kick Start</title>
<author>Leonard Richardson</author>
<author>Sam Ruby</author>
<year>2007</year>
<price>58.33</price>
</book>
这没有取得任何结果
问题2:
SELECT id, xmldata
FROM tblprofile AS a
WHERE 'Leonard Richardson' = CAST((xpath('/book/author/text()', xmldata))[1] AS TEXT)
当上述查询与第一个条目匹配时获取结果。如何使查询1工作?如何在所有子节点中搜索?因为您只需要在where子句的XML列中检查是否存在具有特定值的
author
元素,那么XMLEXISTS()
更合适:
SELECT id, xmldata FROM tblprofile AS a
WHERE XMLEXISTS('/book/author[.="Sam Ruby"]' PASSING a.xmldata)
SELECT id, xmldata FROM tblprofile AS a
WHERE XMLEXISTS('/book/author[.="Sam Ruby"]' PASSING a.xmldata)