0

我正在尝试将列中的值作为 XML 元素获取。是否可以在 sql server 中使用 For XML 来执行此操作?

declare @XMLTest table( [Name] [nvarchar](50) NOT NULL )

INSERT @XMLTest ([Name]) VALUES (N'One¬d¦Uº')
INSERT @XMLTest ([Name]) VALUES (N'Two')
INSERT @XMLTest([Name]) VALUES (N'Three')

我想从选择查询的单独行中获取以下内容。

这将帮助我转义值中的无效字符,以便它们可以正确地序列化为 XML。

<One_x00AC_d_x00A6_U_x00BA_/>
<Two/>
<Three/>

是否可以从 FOR XML 查询中获得此返回?

4

1 回答 1

1

从这里开始:

declare @XMLTest table( [Name] [nvarchar](50) NOT NULL )

INSERT @XMLTest ([Name]) VALUES (N'One')
INSERT @XMLTest ([Name]) VALUES (N'Two')
INSERT @XMLTest([Name]) VALUES (N'Three')

select * from @xmltest for xml auto

以 XML 格式返回。

或者只是一些蹩脚的连接。

declare @XMLTest table( [Name] [nvarchar](50) NOT NULL )

INSERT @XMLTest ([Name]) VALUES (N'One')
INSERT @XMLTest ([Name]) VALUES (N'Two')
INSERT @XMLTest([Name]) VALUES (N'Three')

select '<' + Name + '/>' from @xmltest

如果您的目标更明确,这将有所帮助。

此查询提供了有关如何自定义 XML 内容格式的更多指导。

create table #xmltest (nID int primary key identity, [Name] [nvarchar](50) NOT NULL )
create table #xmldemo (Tag varchar, Parent Varchar, Other Varchar);
declare @i as int = 1;

INSERT #XMLTest ([Name]) VALUES (N'One')
INSERT #XMLTest ([Name]) VALUES (N'Two')
INSERT #XMLTest([Name]) VALUES (N'Three')

while (@i < 3)
begin
declare @tag as varchar(100) = '[Test!1!' + (select name from #XMLTest where nID = @i) + '!ELEMENT]';
declare @dsql as varchar(max) = 'select 1 as Tag, null as Parent, ''this'' as ' + @tag + ' from #xmltest for xml explicit';
exec(@dsql);
set @i += 1;
end

select * from #xmldemo;

drop table #xmldemo;
drop table #xmltest;

那里有一些额外的东西是不相关的,但它展示了你正在尝试的东西。

于 2013-10-15T19:48:08.697 回答