Sql server 从表数据创建XML元素和值
我有一个存储数据的表:Sql server 从表数据创建XML元素和值,sql-server,xml,sql-server-2008-r2,Sql Server,Xml,Sql Server 2008 R2,我有一个存储数据的表: declare @t table ( el nvarchar(50), val nvarchar(50) ) insert into @t values ('n1', 'value 1'), ('n2', 'value 2'), ('n3', 'value 3 <>') declare@t表 ( 艾尔·纳瓦尔(50岁), 瓦尔·纳瓦尔(50) ) 插入@t值('n1','value 1'),('n2','va
declare @t table
(
el nvarchar(50),
val nvarchar(50)
)
insert into @t values ('n1', 'value 1'), ('n2', 'value 2'), ('n3', 'value 3 <>')
declare@t表
(
艾尔·纳瓦尔(50岁),
瓦尔·纳瓦尔(50)
)
插入@t值('n1','value 1'),('n2','value 2'),('n3','value 3'))
我应该得到xml,如下所示:
<data>
<n1>value 1</n1>
<n2>value 2</n2>
<n3>value 3 <></n3>
</data>
值1
价值2
价值3
到目前为止,我能得到的最好结果是:
select cast('<' + el + '>' + (select val from @t i where i.el = t.el for xml raw(''), elements) + '</' + el + '>' as xml)
from @t t
For XML Raw(''), root('data'), Elements, Type
select cast(“”+(从@ti中选择val,其中i.el=t.el表示xml原始(“”),elements)+表示xml)
来自@t
对于XML原始(“”)、根('data')、元素,键入
你能帮忙吗?谢谢 无需在
el
上加入,您可以使用*
删除标记名val
选择cast(“”+(选择val作为“*”作为xml路径(“”))+“”作为xml)
来自@T
对于xml路径(“”),根(‘数据’)
结果:
值1
价值2
价值3
您可以将val
属性转换为XML:
cast((select val for xml path(''), type) as nvarchar(max))
这将为您提供值3
,但您可以使用replace:
select cast('<' + el + '>' +
replace(replace(
cast((select val for xml path(''), type) as nvarchar(max)),
'<val>', ''), '</val>', '') +
'</' + el + '>' as xml)
from @t
for xml path(''), root('data')
选择cast(“”+
替换(
强制转换((为xml路径(“”)选择val),类型)为nvarchar(max)),
'', ''), '', '') +
“”作为xml)
来自@t
对于xml路径(“”),根(‘数据’)
如果您使用的是SQL Server 2012,您可以尝试使用XML路径
SELECT TOP 1000 FirstName, LastName
FROM [AdventureWorks2012].[Person].[Person]
where FirstName like 'Ken%'
and BusinessEntityID like '1514%'
FOR XML PATH
输出将是
<row>
<FirstName>Kendra</FirstName>
<LastName>Alonso</LastName>
</row>
<row>
<FirstName>Kendra</FirstName>
<LastName>Moreno</LastName>
</row>
<row>
<FirstName>Kendra</FirstName>
<LastName>Munoz</LastName>
</row>
<row>
<FirstName>Kendra</FirstName>
<LastName>Romero</LastName>
</row>
肯德拉
阿隆索
肯德拉
莫雷诺
肯德拉
穆尼奥斯
肯德拉
罗梅罗
有关更多示例,请参阅
+1绝妙的把戏!是否有任何关于将
*
与一起用于xml
的文档?@Andomar其中一个列值将成为元素名。你的方法不行,试试看。