用别人的表,不知为何每个字段都加了个前缀,‘f_’
如表t的字段
f_id,f_name
,因为表很多,字段很多,需要用sql执行简单些,我这样写的--字段数,表名,标志值,字段名,表加字段名
declare @colum int,@tname varchar(50),@pos int,@posstr varchar(50),@cloname varchar(50),@tc varchar(50)
set @tname='t'
set @pos=1
--表中字段数
set @colum=(select count(name) from syscolumns where id=object_id(@tname) )while convert(int,@pos)<@colum
begin
--取出第@pos个字段名
set @posstr=convert(varchar(50),@pos )
--这里出错,exec附近有语法错误?
set @cloname =exec('select top 1 name from (select top '+@posstr+' name from syscolumns where id=object_id('+@tname+') order by name)tt order by name desc')
--表名加字段名,如tablename.id
set @tc=@tname+'.'+@cloname
if len(@cloname)>2
begin
set @cloname=substring(@cloname,3,len(@cloname)-2)
exec sp_rename @tc,@cloname,'column' end
set @pos=@pos+1
end
如表t的字段
f_id,f_name
,因为表很多,字段很多,需要用sql执行简单些,我这样写的--字段数,表名,标志值,字段名,表加字段名
declare @colum int,@tname varchar(50),@pos int,@posstr varchar(50),@cloname varchar(50),@tc varchar(50)
set @tname='t'
set @pos=1
--表中字段数
set @colum=(select count(name) from syscolumns where id=object_id(@tname) )while convert(int,@pos)<@colum
begin
--取出第@pos个字段名
set @posstr=convert(varchar(50),@pos )
--这里出错,exec附近有语法错误?
set @cloname =exec('select top 1 name from (select top '+@posstr+' name from syscolumns where id=object_id('+@tname+') order by name)tt order by name desc')
--表名加字段名,如tablename.id
set @tc=@tname+'.'+@cloname
if len(@cloname)>2
begin
set @cloname=substring(@cloname,3,len(@cloname)-2)
exec sp_rename @tc,@cloname,'column' end
set @pos=@pos+1
end
解决方案 »
- c# 关QQ
- 跪求如何动态修改hibernate.cfg.xml的文件
- C#模拟鼠标左键点击
- 文件“e:\Index\_4.cfs”正由另一进程使用,因此该进程无法访问该文件。
- 用DataReader->ListView和DataAdapter&DataSet->DataGridView哪个速度快啊?
- 服务器用c#,客户端用c++(非托管)进行网络通信(socket),可以吗?
- 有没有见过用.NET开发的工作流引擎啊,忘大家贴几个.
- 通过windows的odbc连接好了数据库,C#怎么连windows的odbc 谢谢
- Web 控件中的回发的流程是怎么样的
- 求c#正则表达式
- URL重写,等大虾们来救命~!
- 数据库插入不进去
set columnname(需要修改的字段名)=stuff(columnname,1,2,'') '去掉所有字段前的f_
你把表名改成参数
if object_id('[TB]') is not null drop table [TB]
create table [TB]([f_姓名] varchar(4),[f_领取数量] int,[f_操作类型] varchar(4))
insert [TB]
select '张三',12,'领出' union all
select '李四',1,'领出' union all
select '张三',5,'退' union all
select '陈军',3,'领出'select * from TB
/*
f_姓名 f_领取数量 f_操作类型
---- ----------- ------
张三 12 领出
李四 1 领出
张三 5 退
陈军 3 领出(所影响的行数为 4 行)*/declare @s varchar(400)
set @s=''
select @s=@s+'EXEC sp_rename ''TB.['+name+']'', '''+replace(name,'f_','')+''', ''COLUMN'' '+char(10) from syscolumns where ID=object_id('TB') order by colid
exec(@s)select * from TB/*
姓名 领取数量 操作类型
---- ----------- ----
张三 12 领出
李四 1 领出
张三 5 退
陈军 3 领出(所影响的行数为 4 行)*/
drop table TB