簡體   English   中英

從XML數據列中將SQL Server中的多個值檢索(分解)到表中的同一單元格(行/列交集)中

[英]Retrieve (Shredding) Multiple Values in SQL Server into same cell (row/ column intersection) in table from XML data column

我有一個帶有XML數據列(XMLcol)和ID列的表(T)。

==========================

以下是XML數據:

"( <RootNode>    
<Node1>    
<Line_id_Node>1 </Line_id_Node>    
<A>    
<B>    
<D>Val1 </D>    
</B>    
<B>    
<D>Val2 </D>    
</B>    
<B>    
<D>Val3 </D>    
</B>    
</A>    
</Node1>


<Node1>    
<Line_id_Node> 2 </Line_id_Node>    
<A>    
<B>    
<D>Val4 </D>    
</B>    
<B>    
<D>Val2 </D>    
</B>    
</A>    
</Node1>


<Node1>    
<Line_id_Node> 3 </Line_id_Node>    
<A>    
<B>    
<D>Val5 </D>    
</B>    
</A>    
</Node1>    
</RootNode>)"

預期O / P:

-------------------------------------------------
Line_id_Node                Column_D
-------------------------------------------------
1                           val1, val2, val3
2                           val4, val2
3                           val5

我想在單個單元格中獲得以上所有三個值。 嘗試交叉應用,創建變量等,但未使用正確的語法。

如果至少可以給出一個示例,說明如何使用XML連接相似節點中的值,那也將有所幫助。 我想要的東西的行為方式與將... STUFF與FOR XML PATH結合使用(用於逗號分隔的輸出)。

如果我們使用@XMLhandle,

sp_xml_preparedocument

@XMLDocument, 

sp_xml_removedocument

?? 任何幫助將不勝感激!

謝謝。

DECLARE @T TABLE (id int, XMLcol xml)
INSERT @T VALUES
(1,'<C><D>Val1 </D></C><C><D>Val2 </D></C><C><D>Val3 </D></C>'),
(2,'<C><D>Val4 </D></C><C><D>Val5 </D></C><C><D>Val6 </D></C>')

SELECT id,(
  SELECT STUFF((SELECT ','+v.value('D[1]','varchar(max)')
  FROM @T
  CROSS APPLY XMLCol.nodes('C') x1(v)
  WHERE id = t.id
  FOR XML PATH('')
  ),1,1,'')
)
FROM @T t

--------------------
id  (No column name)
1   Val1 ,Val2 ,Val3 
2   Val4 ,Val5 ,Val6 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM