2016-09-27 46 views
0

我有這樣的XML:XPATH - MICROSOFT SQL - 如何讓所有的孩子特定的屬性節點

<Table Name="Table"> 
     <TableHeader> 
      <TableCol Name="Date"/> 
      <TableCol Name="Number"/> 
      <TableCol Name="Reason"/> 
      <TableCol Name="Time"/> 
     </TableHeader> 
</Table> 

,我希望得到這樣一個結果:

HeaderName 
------------------- 
Date 
Number 
Reason 
Time 

我XPATH查詢是這樣的:

SELECT * FROM OPENXML (@xmlHandle, @docDescriptionTable) 
wITH ( HeaderName varchar(255) '/Table/TableHeader//TableCol/@Name'  );   

,我得到的只是這樣的結果:

HeaderName 
--------- 
Date 

我在做什麼錯?

回答

1

下面是使用nodes() Method

declare @xml xml = ' <Table Name="Table"> 
     <TableHeader> 
      <TableCol Name="Date"/> 
      <TableCol Name="Number"/> 
      <TableCol Name="Reason"/> 
      <TableCol Name="Time"/> 
     </TableHeader> 
</Table>' 

SELECT 
    col.value('./@Name','varchar(50)') 
FROM 
    @xml.nodes('/Table/TableHeader/TableCol') AS t(col) 

結果的一種方法:

HeaderName 
---------- 
Date 
Number 
Reason 
Time 
相關問題