日期:2014-05-16  浏览次数:20417 次

【求助】 怎么能查询到一个表部分列的全部数据
今天从数据库SqlServer2005 导出数据生成excel的时候碰到的问题:
提示说这个表列太多了,所以导出发生了错误。
后来上网搜了一下用这个语句 select name  from syscolumns where id = object_id('table');得出表中有330多列。

我现在的问题是想先取到其中一半列的数据进行excel导出,在取另一半数据导出。
例如这样:
表:table

id   name  sex  age 
1     2            3       4
2     2            3        4
3     2            3        4

我想只取到这样的数据:

id   name  
1     2         
2     2         
3     2           

本人是个数据库菜鸟,请大侠们赐教= =、万分感谢!
------解决方案--------------------
declare @columns varchar(50),@sql varchar(max)
set @columns=''
select @columns=@columns + ',' + a.name
from sys.columns a
join sys.tables b
on a.object_id=b.object_id
where b.name='TableName'
and a.column_id<100 --此处分列
set @columns=STUFF(@columns, 1, 1, '')
set @sql='select '+@columns+' from TableName'
select @sql
exec(@sql)

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

declare @columns varchar(50),@sql varchar(max)
set @columns=''
select @columns=@columns + ',' + a.name
from sys.columns a
join sys.tables b
on a.object_id=b.object_id
where b.name='TableName'
and a.column_id<100 --此处分列
set @columns=STUFF(@columns, 1, 1, '')
set @sql='select '+@columns+' from TableName'
select @sql
exec(@sql)


十分感谢您的回复  由于水平不足看不太懂   请问我直接把【TableName】换成【表名】执行就可以了吗?


在studio里面新建查询 有这样的错误:
消息 102,级别 15,状态 1,第 1 行
'?' 附近有语法错误。
消息 137,级别 15,状态 2,第 12 行
必须声明标量变量 "@sql"。

我在sql2005里面执行了这段代码没问题啊。。。