質問: sql server 2005 にて全テーブルの文字列を置換する方法を sql server 2005 にて全テーブルの文字列を置換する方法を探しています。 ものすごく基礎的なことでしたら申し訳ございません。 sql server 2005で作成したdbがあるのですが、この中の全てのテーブル内を検索し、 「aaa」という文字列を「bbb」に置換したいと考えています。 上記は例えですが、とにかく全てのテーブル内の全ての文字列を検索し、置換できる方法は無いでしょうか。 どうかご教示のほど、よろしくお願いいたします。
回答: エラー処理などは入れておりません。 置換対象のdbは、実行する場所に依存しております。 実行は読み出し例:exec 全置換 '検索文字列','置換文字列' このコードは全角スペースを利用しています。 「全角スペース1個」→「半角スペース2個」に置き換えて利用してください。 create procedure 全置換 ( @検索文字 as nvarchar(max), @置換文字 as nvarchar(max) ) as begin declare @tbl sysname declare @col sysname declare cur cursor for select a.name as tbl,b.name as col from sys.tables a inner join sys.columns b on a.object_id = b.object_id order by a.name, b.column_id open cur fetch cur into @tbl,@col while @@fetch_status=0 begin declare @prm nvarchar(max) set @prm = '@find nvarchar(max), @rep nvarchar(max)' declare @sql nvarchar(max) set @sql = 'update ' + @tbl + ' set ' set @sql = @sql + '[' + @col + '] = replace([' + @col + '], @find, @rep) ' set @sql = @sql + 'where [' + @col + '] like ''%'' + @find + ''%''' execute sp_executesql @sql, @prm, @find=@検索文字, @rep=@置換文字 fetch cur into @tbl,@col end close cur deallocate cur end