从 FOR XML PATH 中删除 XML 标记

Non*_*gon 4 xml t-sql sql-server

我正在从 sql 字符串中获取数据以制作 XML 文件,这是我的 SQL

SELECT [data] AS data
FROM MyTable 
WHERE [Status] = '1' 
FOR XML PATH('DataLocation')
Run Code Online (Sandbox Code Playgroud)

这是我的 XML 返回

<DataLocation>
  <data>String</data>
</DataLocation>
Run Code Online (Sandbox Code Playgroud)

我的问题是我想要标签DataLocation而不是标签data,我只想显示String值。

我哪里错了?

Shn*_*ugo 5

有几种方法会导致相同的结果。他们都有小商品和小商品:

DECLARE @tbl TABLE(Data NVARCHAR(100), [Status] INT)
INSERT INTO @tbl(Data, [Status]) VALUES 
 ('test 1 with 1', 1)
,('test 1 with 2', 2)
,('test 2 with 1', 1);

SELECT [data] AS [*]
FROM @tbl
WHERE [Status] = 1
FOR XML PATH('DataLocation');

SELECT [data] AS [node()]
FROM @tbl
WHERE [Status] = 1
FOR XML PATH('DataLocation');

SELECT '' + [data] --Any kind of computation results in "no caption name"
FROM @tbl
WHERE [Status] = 1
FOR XML PATH('DataLocation') 

SELECT [data] AS DataLocation
FROM @tbl
WHERE [Status] = 1
FOR XML PATH('') 
Run Code Online (Sandbox Code Playgroud)

小背景:如果有一个列名,它将被使用。所以你必须想办法去掉这个列名,或者用你想要的来代替它。