实际开发中经常用到select * from table,往往需要知道具体的字段,这个时候再去数据库中翻或者查看数据字典比较麻烦。为了方便,自己特意写了一个小函数,只针对sqlserver哦。
以下为函数代码:
create function f_selectall ( @ptablename VARCHAR(50),----表名 如SA_WL_LYTZ @split VARCHAR(50) -----别名,如a ) RETURNS VARCHAR(3000) as BEGIN declare @split1 VARCHAR(50); declare @split2 VARCHAR(50); declare @sreturn VARCHAR(3000); if(@split is null) set @split1= '' ELSE set @split1= @split --select ltrim(RTRIM(@split)) if( @split1 <> '') set @split2 = @split1+'.'; ELSE set @split2 = @split1 ; set @sreturn = (select 'select '+cols+' from '+TABLE_NAME+' '+@split1 from (SELECT DISTINCT TABLE_NAME,STUFF((SELECT ','+@split2+ COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = A.TABLE_NAME FOR XML PATH('')),1,1,'') AS cols FROM INFORMATION_SCHEMA.COLUMNS AS A where table_name = UPPER(@ptablename)) t); RETURN @sreturn END
使用的时候只需: select dbo.f_selectall('TABLE','a') ,即可。
输出结果为:select a.col1,a.col2,a.col3 from TABLE a ;
完美代替 select a.* from table a ;
如果不想用别名a,直接空着即可。
自用小工具,仅仅方便使用。