求mysql如何替换数据库中所有表所有字段中的指定字符A为b
单位名称变更了,要把原来数据库中所有相关的内容全变更过来,现数据库比较大,有数百个表,各表中均可能包含有单位名称的字符。现求一办法能在查询管理中一次性实现整个库的特定字符...
单位名称变更了,要把原来数据库中所有相关的内容全变更过来,现数据库比较大,有数百个表,各表中均可能包含有单位名称的字符。
现求一办法能在查询管理中一次性实现整个库的特定字符的替换,谢谢! 展开
现求一办法能在查询管理中一次性实现整个库的特定字符的替换,谢谢! 展开
5个回答
展开全部
1.理论上没可能一次性实现;
2.实际上很多朋友都会碰到这种需求,怎么解决呢?
1)把所有表的结构和数据导出为文本的.sql文件,用文本编辑软件word或者dw等都可以,用替换方法把字符A替换为B,但这有可能误操作,所以要慎重查看;
2)替换完以后,再利用mysql数据管理软件,把SQL文件导入到新的数据库中,进行严格测试,通过后;把旧版数据备份(主要为了安全着想),然后导入新的数据即可完成所需操作;
2.实际上很多朋友都会碰到这种需求,怎么解决呢?
1)把所有表的结构和数据导出为文本的.sql文件,用文本编辑软件word或者dw等都可以,用替换方法把字符A替换为B,但这有可能误操作,所以要慎重查看;
2)替换完以后,再利用mysql数据管理软件,把SQL文件导入到新的数据库中,进行严格测试,通过后;把旧版数据备份(主要为了安全着想),然后导入新的数据即可完成所需操作;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-04-20 · 知道合伙人软件行家
关注
展开全部
DECLARE @TableName VARCHAR(119)
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DECLARE @TableName VARCHAR(119)
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
DECLARE @TableID INT
DECLARE @ColName VARCHAR(111)
DECLARE Table_Cursor CURSOR FOR SELECT [name],id FROM sysobjects WHERE xtype='U';
OPEN Table_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
WHILE(@@FETCH_STATUS=0)
BEGIN
DECLARE Columns_Cursor CURSOR FOR select [name] from [syscolumns] where [id] = @TableID
OPEN Columns_Cursor;
FETCH NEXT FROM Columns_Cursor INTO @ColName;
WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE '+@TableName+' SET '+@ColName+'=replace('+@ColName+',''A'',''b'')');
FETCH NEXT FROM Columns_Cursor INTO @ColName;
END
CLOSE Columns_Cursor;
DEALLOCATE Columns_Cursor;
FETCH NEXT FROM Table_Cursor INTO @TableName,@TableID;
END
CLOSE Table_Cursor;
DEALLOCATE Table_Cursor;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
需要写一个脚本程序,然后通过PHP去遍历修改字段的字符就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询