如何去掉 XML "_x0040_" 属性前缀 SQL?

How to get rid of XML "_x0040_" attribute prefix in SQL?

我正在尝试将 table 的内容导出到 XML,如下所示:

CREATE TABLE TEMPTABLE_Results ([@Id] int)

INSERT INTO TEMPTABLE_Results
SELECT 1 as [@Id];

SELECT * FROM TEMPTABLE_Results
FOR XML RAW('Node'), TYPE, XMLSCHEMA('Node')

DROP TABLE TEMPTABLE_Results

但是结果在属性中有一个烦人的“x0040”前缀:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" targetNamespace="Node" elementFormDefault="qualified">
  <xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
  <xsd:element name="Node">
    <xsd:complexType>
      <xsd:attribute name="_x0040_Id" type="sqltypes:int" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
<Node xmlns="Node" _x0040_Id="1" />

我之前使用的是table类型的变量,但是根据this answer,前缀是在table是临时的时候加上的;但即使使用常规 table,前缀仍然存在。

非常感谢任何帮助。

发现:无需为字段指定“@”即可将其作为属性而不是元素获取。

这会产生所需的结果:

CREATE TABLE TEMPTABLE_Results (Id int)

INSERT INTO TEMPTABLE_Results
SELECT 1 as Id;

SELECT * FROM TEMPTABLE_Results
FOR XML RAW('Node'), TYPE, XMLSCHEMA('Node')

DROP TABLE TEMPTABLE_Results

结果XML是:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" targetNamespace="Node" elementFormDefault="qualified">
  <xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
  <xsd:element name="Node">
    <xsd:complexType>
      <xsd:attribute name="Id" type="sqltypes:int" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
<Node xmlns="Node" Id="1" />