sql—如何使用xpath查询从xml内容中筛选数据以创建临时表

bqucvtff  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(417)

我正在尝试使用xpath创建一个sql查询,在这里我希望过滤我需要的数据并将其放入一个临时表中。例子:

<superStarsDoc>
        <names>
            <starname>
                <preferredname>pref</preferredname>
                <firstNm>Bradd</firstNm>
                <lastNm>Pitt</lastNm>
            </starname>
        </names>
    </superStarsDoc>

and i am trying to get something like this but not working

with data(firstName,lastName) as 
(
unnest(xpath('/superStarsDoc/names/starname/firstNm[@firstNm="Bradd"]/text()',
(select xmlparse(document superstar_doc))))::text as firstName
,unnest(xpath('/superStarsDoc/names/starname/lastNm[@lastNm="Pitt"]lastNm="/text()',
(select xmlparse(document superstar_doc))))::text as lastName
from dbname.superstartable
)

我试图寻找解决方案,但我没有找到任何具体的我的要求,我没有任何属性指向该记录准确。
我试图使用以下解决方案,但这是不工作,我得到语法错误。xpath 1.0来查找元素的值是否在值列表中
注意:我在这里输入的代码,因为我不能复制粘贴我的代码准确,所以请原谅任何打字错误

jfewjypa

jfewjypa1#

您可能应该使用以下方法修复xpath:

/superStarsDoc/names/starname/firstNm[.="Bradd"]/text()
/superStarsDoc/names/starname/lastNm[.="Pitt"]/text()

通用代码:

with superstartable(superstar_doc) as ( 
values (
    '<?xml version="1.0" encoding="UTF-8"?>
  <superStarsDoc>
        <names>
            <starname>
                <preferredname>pref</preferredname>
                <firstNm>Bradd</firstNm>
                <lastNm>Pitt</lastNm>
            </starname>
        </names>
    </superStarsDoc>
'::xml)
)

SELECT
    xpath('/superStarsDoc/names/starname/firstNm[.="Bradd"]/text()', superstar_doc)[1] as "first-name",
    xpath('/superStarsDoc/names/starname/lastNm[.="Pitt"]/text()', superstar_doc)[1] as "last-name"
from superstartable

相关问题