如何从 postgresql 中的 xml 文档中提取值
how to extract a value from xml document in postgresql
如何在 Postgres 中从以下 xml 文档中提取 clientid
的值?
我想从这个 xml:
中获取值 1435
CREATE TABLE xmltest3(xtxt xml);
INSERT INTO xmltest3 values ('<clients><client clientId="1435"/></clients>');
SELECT unnest(xpath('./client /text()', xtxt::xml))::text AS XMLDATA FROM XMLTEST3;
我试过了:
SELECT unnest(xpath('./clients/text()', xtxt::xml))::text AS XMLDATA
FROM XMLTEST3;
但它不起作用。
此外,如何从中提取 ENvalues
?
<ENList><EN ENValue="Liquidity"/><EN ENValue="Treasury"/></ENList>
使用@clientId
获取属性值:
with invar as (
select '<clients><client clientId="1435"/></clients>'::xml as x
)
select unnest(xpath('/clients/client/@clientId', x))
from invar;
unnest
--------
1435
(1 row)
您的另一个示例的概念相同:
with invar as (
select '<ENList><EN ENValue="Liquidity"/><EN ENValue="Treasury"/></ENList>'::xml as x
)
select unnest(xpath('/ENList/EN/@ENValue', x))
from invar;
unnest
-----------
Liquidity
Treasury
(2 rows)
如何在 Postgres 中从以下 xml 文档中提取 clientid
的值?
我想从这个 xml:
中获取值1435
CREATE TABLE xmltest3(xtxt xml);
INSERT INTO xmltest3 values ('<clients><client clientId="1435"/></clients>');
SELECT unnest(xpath('./client /text()', xtxt::xml))::text AS XMLDATA FROM XMLTEST3;
我试过了:
SELECT unnest(xpath('./clients/text()', xtxt::xml))::text AS XMLDATA
FROM XMLTEST3;
但它不起作用。
此外,如何从中提取 ENvalues
?
<ENList><EN ENValue="Liquidity"/><EN ENValue="Treasury"/></ENList>
使用@clientId
获取属性值:
with invar as (
select '<clients><client clientId="1435"/></clients>'::xml as x
)
select unnest(xpath('/clients/client/@clientId', x))
from invar;
unnest
--------
1435
(1 row)
您的另一个示例的概念相同:
with invar as (
select '<ENList><EN ENValue="Liquidity"/><EN ENValue="Treasury"/></ENList>'::xml as x
)
select unnest(xpath('/ENList/EN/@ENValue', x))
from invar;
unnest
-----------
Liquidity
Treasury
(2 rows)