如何快速改变列名
在sql里,有100个不同的列名,我想将其都加_fw,怎样能快速实现。
用sql语句呢?还是什么方法?
如
a b c d....
1 1 1 1
我想变成
a_fw b_fw c_fw d_fw...
1 1 1 1
------解决方案--------------------select name+ '_fw ' from syscolumns where id=object_id( '表名 ')
order by colid
------解决方案--------------------update t2
set t2.name=t2.name+ '_fw '
from sysobjects t1,syscolumns t2
where t1.id=t2.id and t1.xtype= 'u ' and t1.name= '你的表名 '
------解决方案-------------------- create table T(a int, b int, c int, d int)
insert T select 1, 1, 1,1
declare @sql varchar(8000)
set @sql= 'select '
select @sql=@sql+name+ '_fw= '+name+ ', ' from syscolumns where id=object_id( 'T ')
order by colid
select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from T '
--print @sql
exec(@sql)
--result
a_fw b_fw c_fw d_fw
----------- ----------- ----------- -----------
1 1 1 1
------解决方案-----------------------设置可更新系统表
sp_configure 'allow updates ',1
GO
RECONFIGURE WITH OVERRIDE
GO
update syscolumns set name=name+ '_fw ' from where id=object_id( '表名 ')
--记住最后一定要设置回来.
sp_configure 'allow updates ',0
GO
RECONFIGURE WITH OVERRIDE
GO
/*
否则你的系统很危险.
建议你不要这样做.
最好利用存储过程or其他方法来更新.
*/
------解决方案--------------------楼上正解,UP
------解决方案--------------------再上一楼的~
create table T(a int, b int, c int, d int)
insert T select 1, 1, 1,1
declare @sql varchar(8000)
set @sql= 'select '
select @sql=@sql+name+ '_fw= '+name+ ', ' from syscolumns where id=object_id( 'T ')
order by colid
select @sql=left(@sql, len(@sql)-1), @sql=@sql+ ' from T '
--print @sql
exec(@sql)