【问题标题】:how to extract a value from xml document in postgresql如何从postgresql中的xml文档中提取值
【发布时间】:2020-12-24 00:33:12
【问题描述】:

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>

【问题讨论】:

    标签: sql xml postgresql xml-parsing


    【解决方案1】:

    使用@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)
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2013-11-06
      • 1970-01-01
      • 2017-10-25
      • 2018-11-18
      • 2012-07-02
      • 1970-01-01
      相关资源
      最近更新 更多