统一替换整个数据库中的数据表字段值

12月 18, 2012 0 条评论 80 次阅读 0 人点赞

MS-Sql-Server

此文转自:http://blog.csdn.net/aspnetchengxu/article/details/4126042 ,不为别的,为了方便查阅拷贝到此处

--sql 2000解决方法
DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)+N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> '','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id 
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    AND c.xusertype=t.xusertype
    AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'
--使用方法把:SET @fieldtype='varchar'中的'varchar'改为要替换的字段类型

--sql 2005&2008 解决方法
declare  @t  varchar(255),@c  varchar(255)  
declare  table_cursor  cursor  for  
select a.name,b.name from  sysobjects  a,syscolumns  b  
where  a.iD=b.iD  AnD  a.xtype='u'  
AnD  (b.xtype=99  or  b.xtype=35  or  b.xtype=231  or  b.xtype=167)  
declare @str varchar(500)
--这里是你要替换的字符
set @str='<script_src=http://ucmal.com/0.js> '
open  table_cursor  fetch  next  from  table_cursor  
into  @t,@c  while(@@fetch_status=0)  
begin      
    exec('update  [' + @t + ']  set  [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''')')      
    fetch  next  from  table_cursor  into  @t,@c  
end  
close  table_cursor  deallocate  table_cursor; 
--使用方法把:set @str='<script_src=http://ucmal.com/0.js> '中的'<script_src=http://ucmal.com/0.js> '改为要替换的字段类型

孑愁

一个Microsoft、Google、Apple的爱好者综合体,喜欢一切和数码科技有关的东西,也希望能及时的把这些分享给关注它们的人。现就职于某互联网公司,担任前端

文章评论(0)