22,210
社区成员
发帖
与我相关
我的任务
分享
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_%'''
use test
go
create 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 a
inner 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'。
*/
go
drop table def_1,def_2,def_aaa
go
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_%'''