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;
しかし、うまくいきません。
また、これから EN 値を抽出するにはどうすればよいですか?
<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)