給定一個XML列,其數據如下所示,我想編寫一個查詢,其中每個ChangedColumn元素都有一個記錄,並且每個子項都有一個Name/OldValue/NewValue元素。無法查詢每個子節點具有單獨列的xml
DECLARE @t XML = '
<ChangeEvent>
<ChangedColumn>
<Name>MyColumn</Name>
<OldValue>SomeOldValue</OldValue>
<NewValue>SomeNewValue</NewValue>
</ChangedColumn>
<ChangedColumn>
<Name>SomeOtherColumn</Name>
<OldValue>1</OldValue>
<NewValue>2</NewValue>
</ChangedColumn>
</ChangeEvent>
'
所以結果會是這個樣子......
Name OldValue NewValue
MyColumn SomeOldValue SomeNewValue
SomeOtherColumn 1 2
查詢下面會給我在一列一起搗碎的所有數據,但我想每個子節點的值ChangedColumn元素位於單獨的列中,最好使用與元素名稱匹配的列名稱。
SELECT node.value('.', 'VARCHAR(MAX)')
FROM @t.nodes('/ChangeEvent/ChangedColumn') t(node)
任何想法如何解決這個查詢給我需要的結果?
完美的作品。謝謝! – Jim