我的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谢谢
发布于 2012-03-28 23:02:08
使用nodes()将XML分解为行,并使用value()获取一个值。
select
T.N.value('Key[1]', 'int') as [Key],
T.N.value('Value[1]', 'varchar(10)') as Value
from @x.nodes('/root/KV') as T(N)https://stackoverflow.com/questions/9910135
复制相似问题