2013-01-21 45 views
0

我有一个字段的数据存储在它与XML数据类型值:从XML数据类型字段提取数据

<Inning xmlns="" ID="2866433" Company="Hamfekran"> 
    <Test ID="rs232lon"> 
     <Param Name="corel" Value="0.00000" /> 
     <Param Name="co2rel" Value="10.8000" /> 
     <Param Name="hcrel" Value="111.000" /> 
     <Param Name="o2rel" Value="0.95000" /> 
    </Test> 
    <Test ID="9" Name="CustomData"> 
     <param Name="TireFront" Value="3.00" /> 
     <param Name="TireBack" Value="2.00" /> 
    </Test> 
</Inning> 

我怎么能得到的结果与TSQL这样的:

corel  co2rel  hcrel  o2rel  TireFront  TireBack 
-----------------------------------------------------------------------------  
0.00000  10.8000  111.000  0.95000  3.00   2.00 
+0

我应该得到我的结果记录 – Sara

+0

昨天你问同样的问题几乎相同的数据,得到了响应,并将其标记为正确的。这次向我们展示你试过什么 – WKordos

+0

我有几个测试标签,它是由ID – Sara

回答

0
DECLARE @CocoJambo TABLE (
    ID INT IDENTITY PRIMARY KEY, 
    XmlColumn XML NOT NULL 
); 

INSERT @CocoJambo (XmlColumn) 
VALUES (N'<Inning xmlns="" ID="2866433" Company="Hamfekran"> 
    <Test ID="rs232lon"> 
     <Param Name="corel" Value="0.00000" /> 
     <Param Name="co2rel" Value="10.8000" /> 
     <Param Name="hcrel" Value="111.000" /> 
     <Param Name="o2rel" Value="0.95000" /> 
    </Test> 
    <Test ID="9" Name="CustomData"> 
     <param Name="TireFront" Value="3.00" /> 
     <param Name="TireBack" Value="2.00" /> 
    </Test> 
</Inning>'); 

SELECT a.*, 
     b.c.value('(Test[@ID="rs232lon"]/Param[@Name="corel"]/@Value)[1]','NUMERIC(38,5)') AS corel, 
     b.c.value('(Test[@ID="rs232lon"]/Param[@Name="co2rel"]/@Value)[1]','NUMERIC(38,5)') AS co2rel, 
     b.c.value('(Test[@ID="rs232lon"]/Param[@Name="hcrel"]/@Value)[1]','NUMERIC(38,5)') AS hcrel, 
     b.c.value('(Test[@ID="rs232lon"]/Param[@Name="o2rel"]/@Value)[1]','NUMERIC(38,5)') AS o2rel, 

     b.c.value('(Test[@ID="9"]/param[@Name="TireFront"]/@Value)[1]','NUMERIC(38,5)') AS TireFront, 
     b.c.value('(Test[@ID="9"]/param[@Name="TireBack"]/@Value)[1]','NUMERIC(38,5)') AS TireBack 
FROM @CocoJambo a 
CROSS APPLY a.XmlColumn.nodes('/Inning') AS b(c) 

参考文献:

The XML Methods in SQL Server

nodes() Method (xml Data Type)

value() Method (xml Data Type)

xml Data Type Methods