declare @str varchar(1000)
set @str ='col1,col2,col3,col4'
--预定义好所有字段的列表,也可以从系统表中得到这个字符串,稍复杂。select @str=replace(','+@str+',',','+col1+',',',')  --去掉字段一
select @str=replace(','+@str+',',','+col2+',',',')  --去掉字段二
if left(@str,1)=',' then right(@str,len(@str)-1)
if right(@str,1)=',' then left(@str,len(@str)-1)
exec('select '+@str+' from table')

解决方案 »

  1.   

    declare @s int
    declare @i int
    declare @sql varchar(300)
    select @s = count(*) from syscolumns as A left join sysobjects as B
     on A.id = B.id 
    where B.name = 'a1'
    set @sql = 'select ""'
    if @s > 2 
    begin
      set @i = 3
      while exists (select * from syscolumns as A left join sysobjects as B
                    on A.id = B.id where B.name = 'a1' and A.colorder = @i  )
      begin
        select @sql = @sql + ',' + A.name from syscolumns as A left join sysobjects as B
                    on A.id = B.id where B.name = 'a1' and A.colorder = @i
        set @i = @i +1
      end
    end
    set @sql = @sql + ' from a1'
    exec (@sql)