akm*_*akm 4 xml sql t-sql sql-server sql-server-2012
我有一个简单的平面SQL表,有三列A,B和C:
CREATE TABLE [tmp]
(
[A] NVARCHAR(32) NULL
, [B] NVARCHAR(32) NULL
, [C] NVARCHAR(32) NULL
);
Run Code Online (Sandbox Code Playgroud)
我想将每一行转换为XML对象
<Parameter name="A" description="B">666</Parameter>
Run Code Online (Sandbox Code Playgroud)
如果我使用FOR XML AUTO,则所有列都将转换为XML属性.我可以使用FOR XML AUTO, ELEMENTS,或者使用FOR XML RAW以获得标签代替,但我想转换列A,并B以一个属性,使用列C作为标记值.
我怎样才能得到这个结果?
在几乎所有情况下FOR XML PATH都是最好的方法(也是最快的)
CREATE TABLE [tmp]
(
[A] NVARCHAR(32) NULL
, [B] NVARCHAR(32) NULL
, [C] NVARCHAR(32) NULL
);
INSERT INTO [tmp] VALUES
('A','B','666')
,('One more A','And one more B','777');
SELECT A AS [@name]
,B AS [@description]
,C AS [*]
FROM [tmp]
FOR XML PATH('Paramter');
--Clean Up
GO
DROP TABLE [tmp];
Run Code Online (Sandbox Code Playgroud)
结果
<Paramter name="A" description="B">666</Paramter>
<Paramter name="One more A" description="And one more B">777</Paramter>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
632 次 |
| 最近记录: |