首页 > 解决方案 > 使用 MySQL 替换多个字符

问题描述

我正在使用这段代码替换我的数据库的一列中的字符。

UPDATE items 
SET items = REPLACE(items, 'ḇ','ḇ')

但现在我有一个将近 500 个字符的列表要替换。仅在一个查询中编写整个行序列是行不通的。

UPDATE items 
SET items = REPLACE(items, 'ḇ','ḇ')
SET items = REPLACE(items, '&#x1E0x;','x')
SET items = REPLACE(items, '&#x1E0y;','y')
ETC. 

或者我不知道怎么写。任何人都可以帮助我吗?

标签: mysqlstringreplace

解决方案


创建一个将搜索字符串和替换字符串作为列的表。添加需要替换的所有 500 行。然后编写一个存储过程,该过程将从查找表中查找替换值并替换为该值。查找表可以很容易地从 Excel 或 csv 文件加载到 MySql 中。

这是显示循环和查找的伪代码。我知道它不会编译,我对 MySql 语法有点生疏。我通常在 Oracle 工作,所以伪代码语法更像 Oracle。

DECLARE
v_old_string varchar;
v_new_string varchar;
BEGIN
FOR v IN (SELECT * FROM items) LOOP
   SELECT old_string, new_string
     INTO v_old_string, v_new_string
     FROM my_lookup_table
    WHERE old_string = v.thestringcolumn;

   UPDATE items
      SET itemcolumn = REPLACE(itemcolumn, v_old_string, v_new_string)
    WHERE itemcolumn = v_old_string;
END LOOP;
END;

推荐阅读