使用MySQL替换多个字符

时间:2019-05-07 04:18:25

标签: mysql string replace

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

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. 

或者我不知道该怎么写。 谁能帮我吗?

1 个答案:

答案 0 :(得分:0)

创建一个表,该表具有搜索字符串和替换字符串作为列。添加所有需要替换的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;