代码之家  ›  专栏  ›  技术社区  ›  dance2die

将tsql的xml结果列命名为“for xml explicit”?

  •  8
  • dance2die  · 技术社区  · 15 年前

    我有一个查询使用 for xml explit 返回XML结果。

    选择… 从… 订货依据[批量类型!1!typename],[表单类型!2!类型名],标记,父级 对于XML显式,根(“clientimages”)

    但是结果列名称的名称有点像

    alt text

    是否有方法更改列名?


    [答案] 我有几个巢 WITH 语句,因此我保存了查询结果而不应用 FOR XML EXPLICIT 放入临时表 @xmlTable 然后将XML显式结果设置为XML,然后返回它。

    declare @xmlResult xml
    set @xmlResult =(   
        select  * 
        from    @xmlTable
        for xml explicit, root('ClientImages'))
    
    select  @xmlResult as XmlResult
    
    3 回复  |  直到 9 年前
        1
  •  7
  •   marc_s    15 年前

    不,据我所知,没有。SQL Server Management Studio将自动为XML生成这样的名称。

    您可以先将输出分配给一个XML变量,然后选择该变量以获得一个“不错”的列名:

    DECLARE @XmlResult XML
    
    SELECT @XmlResult = ......
      FROM .......
    
    
    SELECT @XmlResult
    

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

    马克

        2
  •  17
  •   guille    15 年前

    --添加一个select(第一个)和type(在末尾),作为[某物]

    select
        ( 
        select 1    as tag,
        null        as parent,
        'algo'      as [nodo!1!attr]
        for xml explicit, type
        ) as [MyDesiredName]
    
    
    
    
        3
  •  0
  •   Jay    9 年前

    如果在返回的XML中需要命名空间:

    WITH XMLNAMESPACES ('urn:http://YourNamespaceHere' as NS0)
    SELECT  ( ... ) AS XmlResult
    

    也可以在子选择中使用NS0名称空间前缀。