【发布时间】:2016-12-07 04:51:26
【问题描述】:
我有样本数据
DECLARE @Table1 TABLE (users int, ts int, name varchar(10), [1] int);
INSERT INTO @Table1 (users, ts, name, [1])
VALUES (1, 1, 'Raj', 0),
(1, 3, 'maj', 2534),
(1, 10, 'yes', 1458);
如果我尝试添加
select
'test' as 'job/branch/FBEN/opcode',
users AS 'job/branch/FBEN/opcode',
name as 'job/branch/FBEN/opcode',
[1] AS 'job/branch/FBEN/opcode/1'
from
@Table1
where
ts = 3
for xml path('xmlexecute'), elements;
我收到一个错误:
消息 6850,第 16 级,状态 1,第 14 行
列名 'job/branch/FBEN/opcode/1' 包含 FOR XML 要求的无效 XML 标识符; '1'(0x0031) 是第一个错误字符。
我怎样才能得到这样的结果:
<xmlexecute>
<job>
<branch>
<FBEN>
<opcode>1</opcode>
<opcode>3</opcode>
<opcode>maj</opcode>
<1> 2534 </1>
</FBEN>
</branch>
</job>
</xmlexecute>
【问题讨论】:
-
XML 相当严格——你不能有一个以数字开头的元素名称。类似问题请见stackoverflow.com/questions/4756402/…。
-
那么我需要做的就是这个@JohnD
-
老兄......还有什么可以回答的?使用任何其他不以数字字符开头的字符。不是火箭科学。
-
例如,您可以使用
job/branch/FBEN/opcode/column1而不是job/branch/FBEN/opcode/1。 -
好的,那么我会向我的数据架构师@JohnD 提出相同的建议
标签: sql sql-server xml