比如有个数据库
表1(字段1,字段2,字段3...)
表2(字段1,字段2,字段3...)
表3(字段1,字段2,字段3...)
表4(字段1,字段2,字段3...)
...我要搜索所有表中的所有字段中的数据
如果出现1内容我就要替换为内容2
怎么写这个修改语句呢
表1(字段1,字段2,字段3...)
表2(字段1,字段2,字段3...)
表3(字段1,字段2,字段3...)
表4(字段1,字段2,字段3...)
...我要搜索所有表中的所有字段中的数据
如果出现1内容我就要替换为内容2
怎么写这个修改语句呢
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) + ',''1内容'',''内容2'')'
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'?'
declare @tableName nvarchar(256), @sql nvarchar(4000),@value nvarchar(100)
set @tableName=parsename(''?'',1)
set @sql=N''''
set @value=N''内容1''select @sql=@sql+N'' update ''+@tableName+'' set ''+name+''=replace(''+name+'',N''''''+@value+'''''',''''内容2'''') where charindex(N''''''+@value+'''''',''+name+'')>0''
from syscolumns
where id=object_id(@tableName) and type_name(xtype) in (''varchar'',''nvarchar'',''char'',''nchar'')--print @sql
exec(@sql)
'
exec sp_msforeachtable N'
declare @tableName nvarchar(256), @sql nvarchar(4000),@value nvarchar(100)
set @tableName=parsename(''?'',1)
set @sql=N''''
set @value=N''内容1''select @sql=@sql+N'' update ''+@tableName+'' set ''+name+''=replace(''+name+'',N''''''+@value+'''''',N''''内容2'''') where charindex(N''''''+@value+'''''',''+name+'')>0''
from syscolumns
where id=object_id(@tableName) and type_name(xtype) in (''varchar'',''nvarchar'',''char'',''nchar'')--print @sql
exec(@sql)
'