[英]Trying to get XML field from SQL Server
我從其中一列為XML格式的表中獲取數據。 該列稱為“已更新”,表為“審核”。 字段如下所示:
<Fields><Field Name="DateFrom"/><Field Name = "Type 1"/><Field Name = "Type 2/></Fields>
<Fields><Field Name = "DateFrom"/></Fields>
<Fields><Field Name="DateFrom"/><Field Name = "Note"/><Field Name = "Type 1"/></Fields>
XML字段是更大查詢的一部分:
Select id, Updated
from Audit
最后將類似於以下內容,ID為非XML列。
ID Updated
123 DateFrom, Type1, Type2
323 DateFrom
455 DateFrom, Note, Type1
我已經嘗試了一些在網上找到的東西,但是沒有正確執行。 我嘗試的一種方法是:
Select Updated.value('/Fields/Field Name)[1]', 'nvarchar(max)') as NewUpdated from Audit.
有任何想法嗎?
您可以使用value
, nodes
和類似的stuff
DECLARE @Audit AS TABLE
(
Id int,
Updated xml
)
INSERT INTO @Audit
(
Id,
Updated
)
VALUES
(1,N'<Fields><Field Name="DateFrom"/><Field Name = "Type 1"/><Field Name = "Type 2" /></Fields>'),
(2,N'<Fields><Field Name = "DateFrom"/></Fields>'),
(3, N'<Fields><Field Name="DateFrom"/><Field Name = "Note"/><Field Name = "Type 1"/></Fields>')
SELECT a.Id, ca.NewUpdated
FROM @Audit a
CROSS APPLY
(
SELECT STUFF(
(SELECT ', ' + x.n.value('(./@Name)[1]', 'varchar(20)')
FROM a.Updated.nodes('/Fields/Field') x(n)
FOR XML PATH('')
),1,2,'') AS NewUpdated
) ca
演示鏈接: http : //rextester.com/NNF94534
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.