我所拥有的示例:
表格:(col1 int, col2 int)
样本数据 (真实数据在运行时不会被知晓):
1,1
2,2
3,3
4,4
预期结果:仅有一列(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>
抱歉,管理员不希望删除“噪音答案”。我希望他能理解我在帮助这些可怜的人,让别人看不出他们完全错了。我在保护他们的声誉...
以下是实现我的方法。但这不是一个好方法,因为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');