替换MySQL中的所有字段

我需要通过使用REPLACE命令替换表的列中的一些字符。

我知道该REPLACE命令需要一个列名,然后是要更改的文本(在以下示例中为“ a”字符)和新文本(在以下示例中为“ e”字符)。

UPDATE my_table SET my_column = REPLACE (my_column,'a','e' );

这样执行该命令将用’ ‘出现次数。my_column``my_table*

但是,如果我需要REPLACE为每一列而不只是为每一列执行命令,该怎么办?这可能吗?

谢谢

回答:

使用以下SQL查询来生成您需要替换所有列中的值的SQL查询。

select concat(

'UPDATE my_table SET ',

column_name,

' = REPLACE(', column_name, ', ''a'', ''e'');')

from information_schema.columns

where table_name = 'my_table';

执行此SQL查询后,只需运行所有查询即可替换所有值。


用这样的核心创建一个存储过程。它可以接受表的名称,要查找的值和要替换的值。

主要思想是使用:

  1. 为动态SQL执行准备的语句;
  2. 游标以遍历表的所有列。

请参阅下面的部分代码(未经测试)。

DECLARE done INT DEFAULT 0;

DECLARE cur1 CURSOR FOR

SELECT column_name FROM information_schema.columns

WHERE table_name = 'my_table';

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;

REPEAT

SET s = concat(

'UPDATE my_table SET ',

column_name,

' = REPLACE(', column_name, ', ''a'', ''e'');');

PREPARE stmt2 FROM s;

EXECUTE stmt2;

FETCH cur1 INTO a;

UNTIL done END REPEAT;

CLOSE cur1;

以上是 替换MySQL中的所有字段 的全部内容, 来源链接: utcz.com/qa/419382.html

回到顶部