日期:2014-05-19  浏览次数:20641 次

如何快速改变列名
在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)