替換SQL Server資料庫中所有表的所有欄位的某些內容

來源:互聯網
上載者:User

 

方法一:

exec   sp_msforeachtable   @command1=N'   
  declare   @s   nvarchar(4000),@tbname   sysname   
  select   @s=N'''',@tbname=N''?''   
  select   @s=@s+N'',''+quotename(a.name)+N''=replace(''+quotename(a.name)+N'',N''''aa'''',N''''bb'''')''   
  from   syscolumns   a,systypes   b   
  where   a.id=object_id(@tbname)     
  and   a.xusertype=b.xusertype   
  and   b.name   like   N''%char''   
  if   @@rowcount>0   
  begin   
  set   @s=stuff(@s,1,1,N'''')   
  exec(N''update   ''+@tbname+''   set   ''+@s)   
  end'

 

方法二:

declare @t varchar(255),@c varchar(255) 
declare table_cursor cursor for 
select a.name,b.name from sysobjects a,syscolumns b ,systypes c 
where a.id=b.id and a.xtype='u' and c.name in (--這裡是要替換的類型 
'char', 'nchar', 'nvarchar', 'varchar','text','ntext' --這裡如果你的text(ntext)類型沒有超過8000(4000)長度,才可以使用

declare @str varchar(500),@str2 varchar(500) 
--這裡是你要替換的原字元 
set @str='aa' 
--這裡是你要替換的新字元 
set @str2='bb'
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+''','''+ @str2 +''')') 
    fetch next from table_cursor into @t,@c 
end 
close table_cursor 
deallocate table_cursor;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.