1.执行SQL 如下: 将SQL查询出的表转换为XML,其中表的字段名称是数字(此例子中是数字开头的字段,也有可能是其它特殊字符开头的字段)
WITH PrepareTable ( XMLString )
AS ( SELECT [年份] ,
[2014] ,
[2015] ,
[2016] ,
[2017]
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY [年份], [2014], [2015], [2016], [2017] ) AS rownum ,
[年份] ,
[2014] ,
[2015] ,
[2016] ,
[2017]
FROM ( SELECT [年份] ,
SUM(ISNULL([2014], 0)) AS [2014] ,
SUM(ISNULL([2015], 0)) AS [2015] ,
SUM(ISNULL([2016], 0)) AS [2016] ,
SUM(ISNULL([2017], 0)) AS [2017]
FROM F_0dba82e31b284efeba67227373f4cd71
GROUP BY [年份]
) aa
) AS D
WHERE rownum BETWEEN 1 AND 100
FOR XML RAW ,
TYPE ,
ELEMENTS
)
SELECT [XMLString]
FROM [PrepareTable];
2. 执行出的结果如下
<row>
<年份>年份</年份>
<_x0032_014>100.23</_x0032_014>
<_x0032_015>102.45</_x0032_015>
<_x0032_016>109.30</_x0032_016>
<_x0032_017>99.00</_x0032_017>
</row>
问题:
其中字段 2014 变成了 _x0032_014, 这个 在SQLServer 中有办法还原回去么 ?
目前临时处理是用Replace 替换掉了,发现一个替换一个。。。
求SQLServer内置函数处理或者其他更好的处理方法。(字段名称是别人定的,已经确认不能修改,处理结果还要丢给别人2次处理,必须要还原回去)