更正:应该是
select 'EXEC sp_rename '''+name+'.[老名]'','+ '''新名'',''COLUMN''' from sysobjects a where type='U'
and exists(select 1 from syscolumns b where b.name='老名' and b.id=a.id )
在SQL SERVER中怎么批量修改字段名
楼主gslrq([夜归人]http://www.west998.com/)2003-10-26 19:47:40 在 MS-SQL Server / 应用实例 提问
在SQL SERVER 数据库中,有好多300多个表,想将多个表中字段名为“Number”的
字段名重命名,怎么作? 问题点数:0、回复次数:4Top
1 楼yone(yone)回复于 2003-10-26 20:11:48 得分 0
select ' EXEC sp_rename ' + name+'.[Number],'+ '''newname'',''COLUMN''' from sysobjects where type ='U'
执行这段SQL,取返回记录,再在QUERY ANALYZER中执行Top
2 楼yone(yone)回复于 2003-10-26 20:16:33 得分 0
补充以下在加一个条件
select ' EXEC sp_rename ' + name+'.[Number],'+ '''newname'',''COLUMN''' from sysobjects a where type ='U'
and exist(select 1 from syscolumns b where b.name ='Number' and b.id = a.id )
执行这段SQL,取返回记录,再在QUERY ANALYZER中执行
Top
3 楼pengdali()回复于 2003-10-26 21:25:13 得分 0
declare cursor_insert cursor for select d.name from syscolumns a, sysobjects d where a.id=d.id and d.xtype='U' and a.name=@旧列名
declare @i varchar(500)
open cursor_insert
fetch cursor_insert into @i
while @@fetch_status=0
begin
set @i=@i+'.'+@旧列名
exec sp_rename @i,@新列名
fetch cursor_insert into @i
end
close cursor_insert
deallocate cursor_insertTop
4 楼pengdali()回复于 2003-10-26 21:25:40 得分 0
举例:
declare @旧列名 varchar(500),@新列名 varchar(500)
select @旧列名='Number',@新列名='新列名'
declare cursor_insert cursor for select d.name from syscolumns a, sysobjects d where a.id=d.id and d.xtype='U' and a.name=@旧列名
declare @i varchar(500)
open cursor_insert
fetch cursor_insert into @i
while @@fetch_status=0
begin
set @i=@i+'.'+@旧列名
exec sp_rename @i,@新列名
fetch cursor_insert into @i
end
close cursor_insert
deallocate cursor_insert
--------------------------------------------
更正:应该是
select 'EXEC sp_rename '''+name+'.[老名]'','+ '''新名'',''COLUMN''' from sysobjects a where type='U'
and exists(select 1 from syscolumns b where b.name='老名' and b.id=a.id )
---------------------------------------------
sqlserver 如何批量更改表名和字段名前缀?
加为好友
发送私信
在线聊天
lvpin258
该用户很懒,没有设置昵称
等级:
可用分等级:短工
总技术分:0
总技术分排名:337026
结帖率:0.00%
发表于:2009-01-18 17:20:18 楼主
sqlserver数据库,批量更改表名和字段的前缀,
如,现在有有若干表,ABC_admin,ABC_product,ABC_user,ABC_upload等,前缀都是ABC,
每个表里的字段名也是ABC开头,现在想把ABC改成EFG,如何能批量修改?
问题点数:5 回复次数:5 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
josy
百年树人
等级:
可用分等级:小地主
总技术分:11925
总技术分排名:1797
发表于:2009-01-18 17:24:371楼 得分:0
先从sysobjects表取出表名,再rename
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
lvpin258
该用户很懒,没有设置昵称
等级:
可用分等级:短工
总技术分:0
总技术分排名:337026
发表于:2009-01-18 17:27:212楼 得分:0
能不能具体点啊?
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
josy
百年树人
等级:
可用分等级:小地主
总技术分:11925
总技术分排名:1797
发表于:2009-01-18 18:05:243楼 得分:0
SQL code
select * from sysobjects where xtype='u' and name like 'ABC_%'--这样可以查出你要修改的表sp_rename oldname,newname--这样可以修改表名看了一个以前邹老大给的例子exec sp_msforeachtable @command1=' declare @o sysname,@n sysname select @o=''?'' ,@n=stuff(@o,1,charindex(''].[ABC_'',@o)+6,'''') ,@n=left(@n,len(@n)-1) exec sp_rename @o,@n', @whereand=' and o.name like ''ABC_%'''
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
fcuandy
故乡的云
等级:
可用分等级:中农
总技术分:74409
总技术分排名:92
3
发表于:2009-01-18 18:30:164楼 得分:0
SQL code
use testgocreate table abc_1(abc_id int)create table abc_2(abc_xxid int)create table abc_aaa(abc_dd int)go--修改列名declare @s varchar(8000)select @s=isnull(@s + char(10) ,'') + 'exec sp_rename ''[' + b.name + '].[' + a.name + ']'',''' + stuff(a.name,1,3,'def') + ''',''column''' from syscolumns ainner join ( select name,id from sysobjects where xtype='u' and name like 'abc\_%' escape('\') ) b on a.id=b.id where a.name like 'abc\_%' escape('\')exec(@s)/*注意: 更改对象名的任一部分都可能破坏脚本和存储过程。column 已重命名为 'def_id'。注意: 更改对象名的任一部分都可能破坏脚本和存储过程。column 已重命名为 'def_xxid'。注意: 更改对象名的任一部分都可能破坏脚本和存储过程。column 已重命名为 'def_dd'。*/--修改表名exec sp_msForeachTable @command1=N'declare @s varchar(100);select @s=left(stuff(''?'',1,10,''def''),len(''?'')-8);exec sp_rename ''?'',@s',@whereand=' and name like ''abc\_%'' escape(''\'')'/*注意: 更改对象名的任一部分都可能破坏脚本和存储过程。object 已重命名为 'def_1'。注意: 更改对象名的任一部分都可能破坏脚本和存储过程。object 已重命名为 'def_2'。注意: 更改对象名的任一部分都可能破坏脚本和存储过程。object 已重命名为 'def_aaa'。*/godrop table def_1,def_2,def_aaago
修改 删除 举报 引用 回复
加为好友
发送私信
在线聊天
josy
百年树人
等级:
可用分等级:小地主
总技术分:11925
总技术分排名:1797
发表于:2009-01-18 18:38:125楼 得分:0
引用 3 楼 josy 的回复:
SQL codeselect * from sysobjects where xtype='u' and name like 'ABC_%'
--这样可以查出你要修改的表
sp_rename oldname,newname
--这样可以修改表名
看了一个以前邹老大给的例子
exec sp_msforeachtable
@command1='
declare @o sysname,@n sysname
select @o=''?''
,@n=stuff(@o,1,charindex(''].[ABC_'',@o)+6,'''')
,@n=left(@n,len(@n)-1)
exec sp_renam…
看错了,以为是把ABC_去掉,ABC_改为EFG_参考下面语句
SQL code
exec sp_msforeachtable @command1=' declare @o sysname,@n sysname select @o=''?'' ,@n=stuff(@o,1,charindex(''].[ABC_'',@o)+6,''EFG_'') ,@n=left(@n,len(@n)-1) exec sp_rename @o,@n', @whereand=' and o.name like ''ABC_%'''
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/skyremember/archive/2009/03/07/3965240.aspx