假设有一个表T,不知道有多少列,但知道有一名为“COL”的列,现在想把除这一列外的所有列的数据查询出来,该如何实现?谢谢!

解决方案 »

  1.   

    declare @sql varchar(1000)
    select @sql=isnull(@sql+',', '')+'['+name+']' from syscolumns
    where id=object_id('T') and name<>'COL'
    exec('select '+@sql +' from T')
      

  2.   

    得到表中除Col1、Col2的所有列例如:userno_fm、userno_to
    create table test(
           num int identity(1,1),
           userno_fm varchar(10),
           userno_to varchar(10),
           username varchar(10))
    select * from testdeclare @sql varchar(8000)
        select @sql=''
        select @sql=@sql+','+[name] from 
        (select [name] from syscolumns where object_id(N'[test]')=[id] and [name] not in ('userno_fm','userno_to')) A    set @sql='select '+stuff(@sql,1,1,'')+' from [test]'
        --print @sql
        exec (@sql)drop table test
      

  3.   


    select tname=syscolumns.[name] 
     into #T
      from syscolumns,sysobjects
        where syscolumns.[id]=sysobjects.[id] 
              and sysobjects.[name]=要检测的表名
              and syscolumns.[name]<>已知的列名
      

  4.   

    select tname=syscolumns.[name] 
      from syscolumns,sysobjects
        where syscolumns.[id]=sysobjects.[id] 
              and sysobjects.[name]=要检测的表名
              and syscolumns.[name]<>已知的列名--不用临时表,直接列出