获取表的列以某物及其数据开头

时间:2018-08-15 20:36:45

标签: sql sql-server-2008

例如:表生

name    age     age1    age2
aname   1       2       3
bname   2       3       3

我想要

age     age1    age2
1       2       3
2       3       3

我可以通过

获得列
select column_name from information_schema 
where column like 'age%' and table_name ='student'

预先感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用动态SQL,使用STUFF合并所有列,然后使用execute函数动态执行SQL。

CREATE TABLE student(
  name varchar(50),
  age int,
  age1 int,
  age2 int
);

insert into student values ('aname',1,2,3);
insert into student values ('bname',2,3,3);

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);


SET @cols = STUFF((
            SELECT distinct ', '+ COLUMN_NAME
            from information_schema.columns 
            where COLUMN_NAME like 'age%' and table_name ='student'
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)')
        ,1,1,'')


set @query = 'SELECT ' + @cols + ' FROM student '
execute(@query)

sqlifddle