查询表部分列

如果一个表列数不固定,要求:除了第2列的其余列都查询出来,这种情况就要用到系统自带的一些表,来帮助我们:

sysobjects——系统对象表,保存当前数据库的对象,如试图,表,存储过程,函数等等...
重要字段:
name(对象名);
xtype(对象类型,试图--V;用户表--U,存储过程--P);
id(对象id);

select * from sysobjects

结果如下:

 

syscolumns——数据库字段表,保存表,试图,存储过程的参数;表,试图的每列在表中占一行,存储过程每个参数在表中占一行.

重要字段:

name(列名或者存储过程参数的名称);

id(所属对象的id);

colorder(列号,1,2,3...);

select * from syscolumns

结果如下:

 

现在根据sysobjects和syscolumns联合查询获取用户表weibo所有列信息

select a.name 对象名,a.xtype 对象类型,a.id 对象id,b.name 列名,b.id 所属对象的id,b.colorder 列号

from sysobjects a,syscolumns b where a.id=b.id and a.xtype='U' and a.name='weibo'

查询结果:

 

可以根据列号<>2,组合查询字符串达到我们想要的结果,最终的sql脚本:

declare @list varchar(1000),@sql nvarchar(1000)
set @list=''
select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id  and a.xtype='U' and a.name='weibo' and (b.colorder<>2)
set @sql='select '+right(@list,len(@list)-1)+' from weibo'
exec (@sql)

 

posted @ 2014-04-22 13:46  Eboss  阅读(179)  评论(0编辑  收藏  举报