使用select有没有办法查询前面的N列

MrRally 2014-12-19 09:54:11
假设现在有一张表,一共有1000个字段,我现在想用select * 查询前面400个字段的内容,然后再用select * 查询后面600个字段的内容,不能一一的把列名写出来,因为太多了。请问能通过什么方法能够实现?
...全文
352 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2014-12-19
  • 打赏
  • 举报
回复
生成查询栏位名,复制在select 位置 --前400栏位 SELECT ','+QUOTENAME(name) FROM syscolumns WHERE ID=OBJECT_NAME('表名') AND colid<=400 --后600栏位 SELECT ','+QUOTENAME(name) FROM syscolumns WHERE ID=OBJECT_NAME('表名') AND colid>400
Tiger_Zhao 2014-12-19
  • 打赏
  • 举报
回复
对方数据库建几个视图划分列,都包含ID。
你就可以导入成多个表,记录都是一对一的关系。
MrRally 2014-12-19
  • 打赏
  • 举报
回复
现在没办法使用动态查询 我现在需要使用openquery去查询另外一个关系型数据库里面的数据,然后用select * into把那边的数据导到MS SQL里面来,但是那边库里面的字段已经超过了1024个,所以我直接用select * into的话根本不能建表,MS SQL里面一张表最多只能有1024个字段。 请问这种情况有没有办法解决呢?
还在加载中灬 2014-12-19
  • 打赏
  • 举报
回复
--只能用动态查询
DECLARE @TABLENAME NVARCHAR(128)
SET @TABLENAME='A'
DECLARE @SQL NVARCHAR(MAX)
SET @SQL=''
SELECT @SQL=@SQL+','+NAME FROM SYS.SYSCOLUMNS
WHERE id=OBJECT_ID(@TABLENAME) AND colid<=400--可以改为>=400 查后600列
SET @SQL='SELECT '+STUFF(@SQL,1,1,'')+' FROM '+@TABLENAME
EXEC(@SQL)
LongRui888 2014-12-19
  • 打赏
  • 举报
回复
这个只能用动态语句来实现,不能通过普通的语句来实现的。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧