【发布时间】:2011-05-29 13:06:19
【问题描述】:
我有下表
name | age | misc
------------------
david | 20 | foo
john | 30 | bar
我想把它转换成下面的 XML:
<doc>
<field name="name" val="david" />
<field name="age" val="20" />
<field name="misc" val="foo" />
</doc>
<doc>
<field name="name" val="john" />
<field name="age" val="30" />
<field name="misc" val="bar" />
</doc>
我在下面为单个列工作,但是如果我尝试为另一个 field 节点添加第二列,我会收到错误:
Msg 9303, Level 16, State 1, Line 25
XQuery [query()]: Syntax error near 'name', expected '}'.
这是我正在尝试做的一个示例,可以在 SQL Server Management Studio 中运行。我找不到太多关于语法的文档,而且很迷茫。
感谢任何帮助!
declare @MyData table (name varchar(200), age varchar(200), misc varchar(200))
insert into @MyData values('david', '20', 'foo')
insert into @MyData values('john', '30', 'bar')
/*This one works fine*/
SELECT (select * from @MyData as MyData for xml auto, type).query
(
' for $d in /MyData
return
<doc>{
<field name="name" val="{data($d/@name)}" />
}</doc>'
)
/*This one is what I want*/
SELECT (select * from @MyData as MyData for xml auto, type).query
(
' for $d in /MyData
return
<doc>{
<field name="name" val="{data($d/@name)}" />
<field name="age" val="{data($d/@age)}" />
<field name="misc" val="{data($d/@misc)}" />
}</doc>'
)
【问题讨论】:
标签: sql-server xml tsql sql-server-2008