話說樓主剛開始也不知道怎么查,然后就開始百度了
大部分網友都是建議一個一個寫 當然程序員是最懶的啦,一個一個寫多痛苦啊
接着找
還別說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 表名 ')
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
例如: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