我在我的 MS SQL 表格列中有一个名为“XDATA”的值,如下所示:
<root><KV><Key>1</Key><Value>A</Value></KV>
<KV><Key>2</Key><Value>B</Value></KV>
<KV><Key>3</Key><Value>C</Value></KV></root>
我希望能够像这样获取行的值:
KEY, VALUE
1,A
2,B
3,C
到目前为止,我已经写了这个:
DECLARE @a1 xml
declare @x xml;
set @x = '<root><KV><Key>1</Key><Value>A</Value></KV>
<KV><Key>2</Key><Value>B</Value></KV>
<KV><Key>3</Key><Value>C</Value></KV></root>';
SELECT @a1 = @x.query('(/root/KV/Key/text())')
select @a1
但是我拿回的是123。并不是三行两列的形式。我该如何才能拿回三行,每行两列的形式:
KEY, VALUE
1,A
2,B
3,C
谢谢
from
子句中,并对XML列执行cross apply
。请参考这个答案。 - Mikael Eriksson