Sql server 2012 如何在sql 2012中从表中检索列名并解析每个字段名的结果

Sql server 2012 如何在sql 2012中从表中检索列名并解析每个字段名的结果,sql-server-2012,Sql Server 2012,如何检索正在执行select的表的列名?我试图将结果附加到每个字段名的先前结果中 示例(不起作用): 一些表格: 结果 id:1、2、3 单位:夸脱、加仑、升 实际上,我正在使用以下select语句对表中的每个字段执行此操作,这些字段包含文本、varchar、char,其中大小小于4000: 我正试图解析的表的实际字段列表(这很有效): 这样,我就可以清楚地看到每个字段的名称,这些字段都有一个不同的结果集。如果您事先知道字段列表,可以使用如下内容: SELECT ( SELECT cas

如何检索正在执行select的表的列名?我试图将结果附加到每个字段名的先前结果中

示例(不起作用):

一些表格: 结果 id:1、2、3
单位:夸脱、加仑、升

实际上,我正在使用以下select语句对表中的每个字段执行此操作,这些字段包含文本、varchar、char,其中大小小于4000:

我正试图解析的表的实际字段列表(这很有效):


这样,我就可以清楚地看到每个字段的名称,这些字段都有一个不同的结果集。

如果您事先知道字段列表,可以使用如下内容:

SELECT
(
    SELECT cast(id as varchar(50)) + ','
    FROM sometable
    ORDER by id
    FOR XML PATH('')
) as list1

UNION ALL

SELECT
(
    SELECT unit + ','
    FROM sometable
    ORDER by id
    FOR XML PATH('')
) as list2

...

我刚刚生成了一个字符串“select col”+colname+”语句,其中包含的列名等于每次出现的特定select语句的列名,并在每个列之间添加了逗号+“,”。
id,unit
`---------`
1,quart
2,gallon
3,liter
select top 1000 SCHEMA_NAME([o].schema_id) as [Schema Name],
       [s].name as [Table Name],
       [c].name as [Field Name],
       [t].name as [Type],
       [c].max_length as [Length],
       [c].precision,
       [c].scale,
       [c].is_identity
from sys.sysobjects as [s]
inner join sys.all_columns as [c] on [s].id = [c].object_id
inner join sys.systypes as [t] on [c].system_type_id = [t].xtype 
inner join sys.objects as [o] on [s].id = [o].object_id
where [s].xtype like 'U' and [t].name not like 'sysname%' and [s].name=N'TableName'
SELECT
(
    SELECT cast(id as varchar(50)) + ','
    FROM sometable
    ORDER by id
    FOR XML PATH('')
) as list1

UNION ALL

SELECT
(
    SELECT unit + ','
    FROM sometable
    ORDER by id
    FOR XML PATH('')
) as list2

...