求mysql如何替换数据库中所有表所有字段中的指定字符A为b

2024-12-15 06:39:25
推荐回答(5个)
回答1:

提供两个办法;
第一个是,笨办法,查找每个字段,看有单位的名称就修改一下。
第二个是,如果数据库数据量不大的话,可以使用mysqldump将数据导出到一个文本文件,然后使用文本文件的替换功能,将单位名称替换成正确的,然后再将数据导入数据库。
当然,也可以两个联合使用,比如先使用第二个方法中的mysqldump将数据导出,然后查找单位名称,看一共有多少处需要修改,然后再使用第一个方法中的update语句将字段值更新成新的单位名称。

回答2:

1.理论上没可能一次性实现;
2.实际上很多朋友都会碰到这种需求,怎么解决呢?
 1)把所有表的结构和数据导出为文本的.sql文件,用文本编辑软件word或者dw等都可以,用替换方法把字符A替换为B,但这有可能误操作,所以要慎重查看;
 2)替换完以后,再利用mysql数据管理软件,把SQL文件导入到新的数据库中,进行严格测试,通过后;把旧版数据备份(主要为了安全着想),然后导入新的数据即可完成所需操作;

回答3:

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;

回答4:

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;

回答5:

需要写一个脚本程序,然后通过PHP去遍历修改字段的字符就可以了