命名TSQL的XML结果列"for xml explicit"?

dan*_*die 8 xml sql t-sql sql-server

我有一个for xml explit用于返回XML结果的查询.

select ... from ... order by [BatchType!1!TypeName],[FormType!2!TypeName],Tag,Parent for xml explicit,root('ClientImages')

但是结果列名的名称就像是一样神秘

替代文字

有没有办法更改列名?


[答案] 我有几个嵌套WITH语句,所以我保存了查询结果而没有应用FOR XML EXPLICIT到临时表@xmlTable,然后将XML EXPLICIT结果设置为XML然后返回它.

declare @xmlResult xml
set @xmlResult =(   
    select  * 
    from    @xmlTable
    for xml explicit, root('ClientImages'))

select  @xmlResult as XmlResult
Run Code Online (Sandbox Code Playgroud)

小智 17

- 添加一个select(第一个)和type(在结尾处),并作为[something]


select
    ( 
    select 1    as tag,
    null        as parent,
    'algo'      as [nodo!1!attr]
    for xml explicit, type
    ) as [MyDesiredName]




mar*_*c_s 7

不,据我所知,没有.SQL Server Management Studio将为您的XML自动生成此类名称.

您可以先将输出分配给XML变量,然后选择它以获得"漂亮"的列名:

DECLARE @XmlResult XML

SELECT @XmlResult = ......
  FROM .......


SELECT @XmlResult
Run Code Online (Sandbox Code Playgroud)

但除此之外,我不知道有任何方法可以影响SSMS生成的列的名称.