我試過這個
select xpath('name()', unnest(xpath('/foo/*', '<foo><bar>test</bar><zar>test1</zar></foo>')));
正如這里的其他問題所建議的那樣,但我只得到兩個空行作為回應。
另外我試過
select unnest(xpath('name(/foo/*)', '<foo><bar>test</bar><zar>test1</zar></foo>'));
但它只回傳一行回應為bar。
有反正我能得到查詢回傳兩列結果bar,zar使用XPath?
uj5u.com熱心網友回復:
xmltable()如果輸出應該是行,我發現更容易使用:
with data (content) as (
values ('<foo><bar>test</bar><zar>test1</zar></foo>'::xml)
)
select x.*
from data
cross join xmltable('/foo/*' passing content
columns
item text path 'name()',
value text path '.') as x
輸出是:
item | value
----- ------
bar | test
zar | test1
uj5u.com熱心網友回復:
您可以使用該name()函式來提取標簽名稱:
select xpath('name(/*)', x)
FROM unnest(
xpath(
'/foo/*',
'<foo><bar>test</bar><zar>test1</zar></foo>'
)
) AS xml(x);
xpath
═══════
{bar}
{zar}
(2 rows)
uj5u.com熱心網友回復:
使用 xpath 函式text()提取元素的內容:
SELECT unnest(xpath('/foo/*/text()','<foo><bar>test</bar><zar>test1</zar></foo>'));
unnest
--------
test
test1
(2 Zeilen)
要列出元素名稱,請使用子查詢/CTE 或使用兩個unnest(),例如
SELECT
unnest(xpath('local-name(./*)',
unnest(xpath('/foo/node()', '<foo><bar>test</bar><zar>test1</zar></foo>'))));
unnest
--------
bar
zar
(2 Zeilen)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/341484.html
標籤:sql PostgreSQL 路径
上一篇:為什么很多查詢(postgresql)的query_start為空?
下一篇:使用ALTERSYSTEMSET(postgresql14)更改配置后,SELECTpg_reload_conf()不起作用
