如何查询一个表中除某几个字段外其他所有的字段


话说楼主刚开始也不知道怎么查,然后就开始百度了

大部分网友都是建议一个一个写 当然程序员是最懒的啦,一个一个写多痛苦啊

接着找

还别说csdn里还有不少大牛的

于是出现了这个脚本

 

declare   @s   nvarchar ( 1000 )
select  @s = isnull( @s + ' , ', '') + quotename(Name)  from syscolumns  where ID = object_id( ' 表名 'and Name  not  in( ' 排除字段 'order  by colid 
exec( ' select  ' + @s + '  from 表名 ')

 执行之后 哇 完美 正是我想要的结果

然后博主闲着没事又往下翻了翻有另外一个网友也给出了类似的方法代码如下:

 

得到表中除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 test

declare  @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

执行一下 结果是相同的

也可以看出两个方法直接的差别

第一个堪称完美

第二个有点笨拙因为  

select @sql='' select @sql=@sql+','+[name] from  可以用@s=isnull(@s+',','')代替

 'select '+stuff(@sql,1,1,'') 不如 quotename(Name)方便直接

不过第二个也正是博主的写作风格所以博主才有切身的感受见到第一个代码如土鳖与到了女神

今天又一次感受到了编程之美,代码之美 心中一阵清风吹过 爽

博主又有了新猜想,以后直接用sql查询出json格式的数据就不用在后端第三方工具将table转换了  

文中代码引自: http://bbs.csdn.net/topics/330143955#quote

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM