我有一个使用for xml explit
返回XML结果的查询。
选择...... 来自...... 按[BatchType!1!TypeName],[FormType!2!TypeName],Tag,Parent排序 对于xml explicit,root('ClientImages')
但结果列名的名称与
一样神秘
有没有办法更改列名?
[ANSWER]
我有几个嵌套的WITH
语句,所以我保存了查询结果,而没有将FOR XML EXPLICIT
应用到临时表@xmlTable
中,然后将XML EXPLICIT结果设置为XML然后返回它。 / p>
declare @xmlResult xml
set @xmlResult =(
select *
from @xmlTable
for xml explicit, root('ClientImages'))
select @xmlResult as XmlResult
答案 0 :(得分:17)
- 添加一个select(第一个)和type(在结尾处),并添加[something]
select ( select 1 as tag, null as parent, 'algo' as [nodo!1!attr] for xml explicit, type ) as [MyDesiredName]
答案 1 :(得分:7)
不,据我所知,没有。 SQL Server Management Studio将为您的XML自动生成此类名称。
您可以先将输出分配给XML变量,然后选择它以获得“漂亮”的列名称:
DECLARE @XmlResult XML
SELECT @XmlResult = ......
FROM .......
SELECT @XmlResult
但除此之外,我不知道有任何方法可以影响SSMS生成的列的名称。
马克
答案 2 :(得分:0)
如果您在返回的xml中需要名称空间:
WITH XMLNAMESPACES ('urn:http://YourNamespaceHere' as NS0)
SELECT ( ... ) AS XmlResult
您也可以在子选择中使用NS0名称空间前缀。