mysql遍歷所有表字段替換值

2021-10-08 08:31:27 字數 2886 閱讀 7235

update eform_lf_directory set directory_name='集團總部' where directory_name='集團'

update eform_lf_directory set directory_name=replace(directory_name,'集團','集團總部')  where directory_name like '%集團%';

create procedure init_replace ( in orig_str varchar ( 100 ), in new_str varchar ( 100 ), in db_name varchar ( 100 ), in tb_name varchar ( 100 ) ) begin

declare

t_name varchar ( 50 );

declare

done int default 0;

declare

cur cursor for select distinct

table_name as name 

from

information_schema.tables 

where

table_schema = db_name

and table_type = 'base table' 

and table_name like tb_name;

declare

continue handler for not found 

set done = 1;

open cur;

fetch cur into t_name;

while

( done <> 1 ) do

call do_replace ( orig_str, new_str, db_name, t_name );

fetch cur into t_name;

end while;

end;

-- 2.然後1中呼叫2中的方法,在查詢表中所有的字段,並且指定更新值:

create procedure do_replace (

in orig_str varchar ( 100 ),

in new_str varchar ( 100 ),

in db_name varchar ( 100 ),

in t_name varchar ( 100 ) 

) begin

declare

cul_name varchar ( 50 );

declare

done int default 0;

declare

cur cursor for select

column_name 

from

information_schema.columns 

where

table_schema = db_name 

and table_name = t_name;

declare

continue handler for not found 

set done = 1;

open cur;

fetch cur into cul_name;

while

( done <> 1 ) do

set @update_sql = concat( "update ", t_name, " set `", cul_name, "`=replace(`", cul_name, "`,'", orig_str, "','", new_str, "');" );

prepare stmt 

from

@update_sql;

execute stmt;

fetch cur into cul_name;

end while;

close cur;

end;

分表呼叫了,不然工具會卡掉

call init_replace('集團','集團總部','edoc2v5','eform_lf%'); 

update eform_lf_directory set directory_name='智慧型服務集團' where directory_name='智慧型服務集團總部';

call init_replace('集團','集團總部','edoc2v5','eform_longfor%'); 

call init_replace('集團','集團總部','edoc2v5','portal_c%'); 

call init_replace('集團','集團總部','edoc2v5','portal_d%'); 

call init_replace('集團','集團總部','edoc2v5','portal_e%'); 

call init_replace('集團','集團總部','edoc2v5','portal_h%'); 

call init_replace('集團','集團總部','edoc2v5','portal_k%'); 

call init_replace('集團','集團總部','edoc2v5','portal_l%'); 

call init_replace('集團','集團總部','edoc2v5','portal_p%'); 

call init_replace('集團','集團總部','edoc2v5','portal_sitepage'); 

call init_replace('集團','集團總部','edoc2v5','portal_sitepagedata'); 

call init_replace('集團','集團總部','edoc2v5','portal_t%'); 

call init_replace('集團','集團總部','edoc2v5','portal_w%'); 

批量替換表字段內容

覺得有用,給兄弟們分享一下 declare updatestring nvarchar 1000 declare selectstring nvarchar 1000 declare colname varchar 100 declare count int if tblname is null o...

mysql查詢表字段預設值

mysql查詢表字段預設值。假設表user有個字段 login times int 11 unsigned not null default 0 comment 登入次數 需要獲取該字段的預設值,實現方法 desc user 查詢結果 field type null default id varch...

MySQL表字段操作

語法 新增到末尾 alter table 表名 add 欄位名,資料型別 新增到開始 alter table 表名 add 欄位名 資料型別 first 新增到制定位置 alter table 表名 add 欄位名 after 欄位名 會新增在這個欄位名的下面 刪除字段 alter table 表名...