sql 查询 第二列 字段

feng199 2013-11-16 07:56:54
不是用列名:select bbb from TableName
而是用数字:select 3 from TableName

不用列名,用数字指定,要查询第3列,怎么查询?

表字段结构如下:
ID aaa bbb ccc

...全文
473 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2013-11-16
  • 打赏
  • 举报
回复
是这样吗:

--drop table tb

create table tb(ID int,aaa varchar(10),bbb varchar(10), ccc varchar(10))

insert into tb
select 1,'a1','b1','c1' union all
select 2,'a2','b2','c2' union all
select 3,'a3','b3','c3' 
go


DECLARE @i INT
declare @table_name nvarchar(100)
declare @sql nVARCHAR(4000)

SET @i=3
set @table_name= 'tb'

SELECT @sql='select '+c.name+' from ' +@table_name
FROM sys.tables t
inner join sys.columns c
        on t.object_id = c.object_id
WHERE t.name =@table_name 
      AND c.column_id=@i

--select @sql
/*
select bbb from tb
*/

EXEC(@sql)
/*
bbb
b1
b2
b3
*/
---涛声依旧--- 2013-11-16
  • 打赏
  • 举报
回复
一楼正解
小魚人 2013-11-16
  • 打赏
  • 举报
回复

declare @i int
set @i=2
declare @sql varchar(200)
set @sql='select '+ quotename((select name from sys.syscolumns where ID=OBJECT_ID(TableName) and colid =@i),'')+' from  TableName '
exec( @sql)
lzw_0736 2013-11-16
  • 打赏
  • 举报
回复

DECLARE @i INT,@sql VARCHAR(max)
SET @i=3
SELECT @sql='select '+name+' from 表名'
FROM syscolumns 
WHERE id=OBJECT_ID('表名') AND colorder=@i
EXEC(@sql)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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