declare @s varchar(300)
set @s = 'select '
select @s = @s + A.name + ','  from syscolumns A, sysobjects B, systypes C
where A.id = B.id
and A.xtype = C.xtype
and B.name = 'a1'
and C.name <> 'image'
set @s = left(@s, len(@s) -1) + ' from a1'
select @s
exec (@s)

解决方案 »

  1.   

    declare @str varchar(300)
    set @str = ''
    select @str = @str +','+ name 
    from syscolumns
    where id=object_id('你的表') and objectproperty(id,'IsUserTable')=1
    and name<>'照片'
    set @str = 'select '+right(@str,len(@str)-1)+' from  你的表'
    print @str
    exec (@str)
      

  2.   

    我的建议,你不如用可视化的查询生成sql,这样可以保证你所写的语句的正确性,
    加上良好的注释,维护程序也不是大问题
    我个人认为,动态sql是不是在执行效率上有很大的问题,毕竟要逐个比较,
    ,如果哪一天要去掉其他的字段,那时候更会看出
    灵活性的差异了
      

  3.   

    多谢各位,我觉得SQL语法里应该有一个现成的功能吧,……只是我们不知道而已。
    再次求问高手。