我想创建一个简单的MSSQL SELECT
查询并对其进行格式化以创建XML文档。
我可以通过以下方式简化XML的格式化:
SELECT
'<UNB_TIERART uuid="MY_UNIQUE_ID" > <TIERKLASSE>'
GRUPPE
+'</TIERKLASSE> </UNB_TIERART>'
FROM [MAPAGENT].[dbo].[ARTEN]
是否有方法用变量替换MY_UNIQUE_ID
,例如每个条目增加1的数字?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果要创建xml文档,为什么不完全在SQL Server中使用以下FOR XML语法?
看看这个解决方案:
SELECT
ROW_NUMBER() OVER (ORDER BY Gruppe) AS '@uuid',
GRUPPE AS 'TIERKLASSE'
FROM (VALUES('G1'), ('G2')) T(Gruppe) [MAPAGENT].[dbo].[ARTEN]
FOR XML PATH('UNB_TIERART')
如果您还需要root(完整XML),只需添加ROOT(&#39; root name&#39;),如下所示:
SELECT
ROW_NUMBER() OVER (ORDER BY Gruppe) AS '@uuid',
GRUPPE AS 'TIERKLASSE'
FROM (VALUES('G1'), ('G2')) T(Gruppe) --YOUR TABLE
FOR XML PATH('UNB_TIERART'), ROOT('ROOT')
后者产生:
<ROOT>
<UNB_TIERART uuid="1">
<TIERKLASSE>G1</TIERKLASSE>
</UNB_TIERART>
<UNB_TIERART uuid="2">
<TIERKLASSE>G2</TIERKLASSE>
</UNB_TIERART>
</ROOT>
如果您需要不同的gruppe,请将distinct应用于您的基表:
SELECT
ROW_NUMBER() OVER (ORDER BY Gruppe) AS '@uuid',
GRUPPE AS 'TIERKLASSE'
FROM (
SELECT DISTINCT Gruppe FROM [YOUR TABLE]
) DistincResult
FOR XML PATH('UNB_TIERART'), ROOT('ROOT')