Sof*_*ion 4 xml t-sql sql-server
我的例子:
table:(col1 int, col2 int)
示例数据(在运行时将不知道真实数据):
1,1
2,2
3,3
4,4
Run Code Online (Sandbox Code Playgroud)
预期结果:仅一列(xml)
和4行
row1: <cols><col1>1</col1><col2>1</col2></cols>
row2: <cols><col1>2</col1><col2>2</col2></cols>
row3: <cols><col1>3</col1><col2>3</col2></cols>
row4: <cols><col1>4</col1><col2>4</col2></cols>
Run Code Online (Sandbox Code Playgroud)
对不起,主持人不希望删除"噪音回答".我希望他能理解我正在帮助这些可怜的家伙,所以没有人能看出他们完全错过了这一点.我在保护他们的声誉......
这是实现我想要的方式.但这不是一个好方法,因为xml是手工构建的,没有正确编码.
declare @colsList nvarchar(max)
set @colsList = ''
select @colsList = @colsList + '+ ''<' + COLUMN_NAME + '>'' + Isnull(cast( [' + COLUMN_NAME + '] as nvarchar(max)),'''') + ''</' + COLUMN_NAME + '>'' '
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'SampleTable';
select @colsList = stuff(@colsList,1,1,'');
exec('select colsValues=cast(' + @colsList + ' as xml) from SampleTable');
Run Code Online (Sandbox Code Playgroud)
Sof*_*ion 18
嗯越简单越快越好.
select d=(select a.* for xml path('r'),type,elements absent)
from MyTable a
Run Code Online (Sandbox Code Playgroud)
小智 9
最简单的方法是使用它:
SELECT (SELECT T.* FOR XML RAW)
FROM MyTable T
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要更多地控制XML结构,您应该使用:
SELECT (SELECT T.* FROM (SELECT T.*) T FOR XML AUTO)
FROM MyTable T
Run Code Online (Sandbox Code Playgroud)