如何查詢一個表中除某幾個字段外其他所有的字段


話說樓主剛開始也不知道怎么查,然后就開始百度了

大部分網友都是建議一個一個寫 當然程序員是最懶的啦,一個一個寫多痛苦啊

接着找

還別說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