是这样子的,我想查询一个有20多列的表,但是我不需要最后一个列,让我把前面一个个列出来select感觉麻烦,有语句能直接select的时候排除掉指定列么?

解决方案 »

  1.   


    declare @table varchar(100)
    declare @a varchar(2000)
    set @table='a'--表名
    select @a=ISNULL(@a,'')+','+name from sys.columns 
    where object_id=(select object_id from sys.tables where name=@table)
    and name not in('')--括号里写你不要的列
    set @a=stuff(@a,1,1,'')
    exec('select '+@a+' from '+@table)
      

  2.   

    楼主要善于用sql server的查询分析,右键你的表==>编写表脚本为==>select 到==>新查询编辑窗口,去掉最后一个字段不是很方便吗?
      

  3.   

    DECLARE @s NVARCHAR(4000)
    SET @s = ''
    SELECT  @s = @s + ',' + 'isnull('+QUOTENAME(name)+','''')'
    FROM    syscolumns
    WHERE   id = OBJECT_ID('表名')
            --AND name NOT IN ( '不希望显式的列' )
    SET @s = STUFF(@s, 1, 1, '')
    EXEC('select '+@s+' from 表名  ')
      

  4.   


    select name + ',' 
    from syscolumns 
    where id = object_id('mytable') -- 这样可以把所有列名都弄出来,直接干掉最后一行和倒数第二行的逗号,就是你的结果
      

  5.   

    SELECT s.name+'=tkm.'+s.name+',' FROM syscolumns s
    WHERE id=OBJECT_ID('T_KPI_Mapping')
    如果是连接查询什么的,可以使用这个,带上前缀什么都行