在SQL Server 2005中,如何使用列值作为xml元素名称?

前端之家收集整理的这篇文章主要介绍了在SQL Server 2005中,如何使用列值作为xml元素名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
作为一个例子,简化我在做什么,说我有以下表格:
  1. declare @elements table (id int,name nvarchar(20))
  2.  
  3. insert into @elements (id,name) values (1,'FirstName')
  4. insert into @elements (id,name) values (2,'Surname')
  5. insert into @elements (id,name) values (3,'Address')
  6.  
  7. declare @values table (id int,value nvarchar(20),elementId int)
  8.  
  9. insert into @values (id,value,elementId) values (1,'XXX',1)
  10. insert into @values (id,elementId) values (2,'YYY',2)
  11. insert into @values (id,elementId) values (3,'ZZZ',3)

它简单地定义了一个可以是动态的元素名称表,对它们定义了一个值表.

我想要的是以以下形式生成XML,其中@elements表的值成为元素名称,而@values表的值将变为值.

  1. <Customer>
  2. <FirstName>XXX</FirstName>
  3. <Surname>YYY</Surname>
  4. <Address>ZZZ<Address>
  5. </Customer>

不过我到目前为止xml的努力并没有那么好:

  1. select e.name,v.value from @elements e
  2. inner join @values v on v.elementId = e.id
  3. for xml path(''),root('customer')

回报

  1. <customer>
  2. <name>FirstName</name>
  3. <value>XXX</value>
  4. <name>Surname</name>
  5. <value>YYY</value>
  6. <name>Address</name>
  7. <value>ZZZ</value>
  8. </customer>

为xml自动返回

  1. <customer>
  2. <e name="FirstName">
  3. <v value="XXX" />
  4. </e>
  5. <e name="Surname">
  6. <v value="YYY" />
  7. </e>
  8. <e name="Address">
  9. <v value="ZZZ" />
  10. </e>
  11. </customer>

用于xml原始返回

  1. <customer>
  2. <row name="FirstName" value="XXX" />
  3. <row name="Surname" value="YYY" />
  4. <row name="Address" value="ZZZ" />
  5. </customer>

有没有办法可以从列中获取值作为元素名称输出?我相信我在这里显然很简单.

解决方法

这是cheezy但它的作品…
  1. select
  2. cast('<' + name + '>' + value + '</' + name + '>' as xml)
  3. from @values v
  4. join @elements e on v.id = e.id
  5. for xml path(''),root('Customer')

—结果—

  1. <Customer>
  2. <FirstName>XXX</FirstName>
  3. <Surname>YYY</Surname>
  4. <Address>ZZZ</Address>
  5. </Customer>

猜你在找的MsSQL相关文章