declare @sql varchar(8000)
set @sql=''
select @sql='+'+name from syscolumns where id=object_id('表名')
set @sql='select '+stuff(@sql,1,1,'')+' from 表名'
exec(@sql)

解决方案 »

  1.   

    漏掉了一个:
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+'+'+name from syscolumns where id=object_id('表名')
    set @sql='select '+stuff(@sql,1,1,'')+' from 表名'
    exec(@sql)
      

  2.   

    --创建测试环境
    create table tb
    (
      a varchar(10),
      b varchar(10),
      c varchar(10)
    )
    insert tb
    select 'AAA','BBB','CCC' union
    select 'DDD','EEE','GGG' --测试
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+'+'+name from syscolumns where id=object_id('tb')
    set @sql='select '+stuff(@sql,1,1,'')+' from tb'
    exec(@sql)--删除测试环境
    drop table tb
    --结果
    /*
                                   
    ------------------------------ 
    AAABBBCCC
    DDDEEEGGG
    */
      

  3.   

    楼上果然是高手,不过我测试了之后,出现了个新问题:字段中有一些是null,如果和其他字段相加,这行就变成了null,如何能在相加过程中把含有null字段转换成该字段长度的空格?比如
    a(5) b(3) c(4)
    aaaaa null cccc
    我要求的结果是:
    aaaaa   cccc
    这该怎么办?
      

  4.   

    补一下有NULL的:create table tb
    (
      a varchar(10),
      b varchar(10),
      c varchar(10)
    )
    insert tb
    select 'AAA','BBB',null union
    select 'DDD','EEE','GGG' --测试
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+'+isnull('+name + ','''')'from syscolumns where id=object_id('tb')
    set @sql='select '+stuff(@sql,1,1,'')+' from tb'
    exec(@sql)--删除测试环境
    drop table tb
      

  5.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+'+isnull(['+name+'],space('+convert(varchar,length)+'))' from syscolumns where id=object_id('tb')
    set @sql='select '+stuff(@sql,1,1,'')+' from tb'
    exec(@sql)
      

  6.   

    這種方法對image字段不通用
    會報錯﹕Operand type clash: image is incompatible with smalldatetime
      

  7.   

    太好了,我这个表中没有image字段,我的目的达到了,太谢谢楼上2位了