• sql 解析xml


    /

    --属性读取表
    DECLARE @x XML
    SELECT @x =
    '<Peoples>
      <People Name="tudou" Sex="女" />
      <People Name="choushuigou" Sex="女"/>
      <People Name="dongsheng" Sex="男" />
    </Peoples>'
    SELECT 
        x.v.value('@Name[1]','VARCHAR(20)') AS Name, 
        x.v.value('@Sex[1]','VARCHAR(20)') AS Sex
    FROM @x.nodes('/Peoples/People') x(v)
    
    SELECT v.value('@Name[1]','varchar(30)') FROM @x.nodes('/Peoples/People') t(v);
    GO
    
    
    
    /*
        节点读取表,读取数据时字段区分大小写,
        如带命名空间需要多加一行代码:WITH XMLNAMESPACES(DEFAULT 'http://cd.love.com/SOA') --带命名空间
    */
    DECLARE @ItemMessage XML 
    DECLARE @ItemTable TABLE(ItemNumber INT PRIMARY KEY,ItemDescription NVARCHAR(300))
    SET @ItemMessage=N'
    <ItemList xmlns="http://cd.love.com/SOA">     
    <Item>
            <ItemNumber>1</ItemNumber>
            <ItemDescription>XBox 360,超值</ItemDescription>
        </Item>
        <Item>
            <ItemNumber>1</ItemNumber>
            <ItemDescription>Windows Phone7,快来尝鲜吧</ItemDescription> 
        </Item> 
    </ItemList>';
    WITH XMLNAMESPACES(DEFAULT 'http://cd.love.com/SOA') --带命名空间
    SELECT 
    T.c.value('(ItemNumber/text())[1]','int') AS ItemNumber, 
    T.c.value('(ItemDescription/text())[1]','NVARCHAR(300)')  AS ItemDescription
    FROM @ItemMessage.nodes('/ItemList/Item') AS T(c);
    
    WITH XMLNAMESPACES(DEFAULT 'http://cd.love.com/SOA') --带命名空间
    SELECT 
    v.value('(ItemNumber/text())[1]','int') AS ItemNumber   FROM @ItemMessage.nodes('/ItemList/Item') t(v)
    GO
    
    
    
    DECLARE @ItemMessage XML ;
    SET @ItemMessage =
    '<SAPLOG>
        <rows><ISID>100</ISID><UPDDATE>2020-09-01 00:00:00</UPDDATE><SHOPNAME /><BSTKD>E20191119093</BSTKD><VBELN>0000100786</VBELN><VBELN_J>0080108510</VBELN_J><VBELN_M>0090095351</VBELN_M><KUNNR>0000100755</KUNNR><MATNR>000000000050001357</MATNR><KWMENG>0.500</KWMENG><DJ>145.00</DJ><WC>0.00</WC><ZK>-15.29</ZK><LGORT>C008</LGORT><STEP>C</STEP><MSGTYP>S</MSGTYP><MESSAGE>过账成功</MESSAGE></rows>
        <rows><ISID /><UPDDATE/><SHOPNAME /><BSTKD>E20191119093</BSTKD><VBELN>0000100786</VBELN><VBELN_J>0080108510</VBELN_J><VBELN_M>0090095351</VBELN_M><KUNNR>0000100755</KUNNR><MATNR>000000000050001357</MATNR><KWMENG>0.500</KWMENG><DJ>145.00</DJ><WC>0.00</WC><ZK>-15.29</ZK><LGORT>C008</LGORT><STEP>D</STEP><MSGTYP>S</MSGTYP><MESSAGE>开票成功</MESSAGE></rows>
        <rows><ISID /><UPDDATE/><SHOPNAME /><BSTKD>E20191119093</BSTKD><VBELN>0000100786</VBELN><VBELN_J>0080108510</VBELN_J><VBELN_M>0090095351</VBELN_M><KUNNR>0000100755</KUNNR><MATNR>000000000050001357</MATNR><KWMENG>0.500</KWMENG><DJ>145.00</DJ><WC>0.00</WC><ZK>-15.29</ZK><LGORT>C008</LGORT><STEP>B</STEP><MSGTYP>S</MSGTYP><MESSAGE>交货创建成功</MESSAGE></rows>
        <rows><ISID /><UPDDATE /><SHOPNAME /><BSTKD>E20191119093</BSTKD><VBELN>0000100786</VBELN><VBELN_J>0080108510</VBELN_J><VBELN_M>0090095351</VBELN_M><KUNNR>0000100755</KUNNR><MATNR>000000000050001554</MATNR><KWMENG>4.000</KWMENG><DJ>6.50</DJ><WC>0.00</WC><ZK>-5.48</ZK><LGORT>C008</LGORT><STEP>C</STEP><MSGTYP>S</MSGTYP><MESSAGE>过账成功</MESSAGE></rows>
    </SAPLOG>' 
    SELECT  
        t.c.value('(ISID/text())[1]','varchar(200)') AS ISID,
        t.c.value('(UPDDATE/text())[1]','varchar(200)') AS UPDDATE,
        t.c.value('(VBELN/text())[1]','varchar(200)') AS VBELN,
        t.c.value('(VBELN_J/text())[1]','varchar(200)') AS VBELN_J,
        t.c.value('(VBELN_M/text())[1]','varchar(200)') AS VBELN_M,
        t.c.value('(KUNNR/text())[1]','varchar(200)') AS KUNNR,
        t.c.value('(MATNR/text())[1]','varchar(200)') AS MATNR,
        t.c.value('(KWMENG/text())[1]','varchar(200)') AS KWMENG,
        t.c.value('(DJ/text())[1]','varchar(200)') AS DJ,
        t.c.value('(WC/text())[1]','varchar(200)') AS WC,
        t.c.value('(ZK/text())[1]','varchar(200)') AS ZK,
        t.c.value('(LGORT/text())[1]','varchar(200)') AS LGORT,
        t.c.value('(STEP/text())[1]','varchar(200)') AS STEP,
        t.c.value('(MSGTYP/text())[1]','varchar(200)') AS MSGTYP ,
        t.c.value('(MESSAGE/text())[1]','varchar(200)') AS [MESSAGE] 
    FROM @ItemMessage.nodes('/SAPLOG/rows') AS t(c);

    .

  • 相关阅读:
    Warning! PATH is not properly set up...
    用rvm切换ruby
    Mac下多版本JDK安装
    iOS开发 密码里面含有特殊字符如何处理传给后端
    Cornerstone版本回退160013错误
    iOS 11 Xcode9 tableview点击cell上的按钮cell自动往上跳动
    iOS 获取全部字体的Fontfamily和FontName
    iOS WKWebView 点击超链接跳转至Safari
    iOS 11在window上加视图不显示
    Java并发(2)
  • 原文地址:https://www.cnblogs.com/lanyubaicl/p/13728596.html
Copyright © 2020-2023  润新知