我需要通过使用REPLACE命令替换表的列中的一些字符。 我知道该REPLACE命令需要一个列名,然后是要更改的文本(在以下示例中为“ a”字符)和新文本(在以下示例中为“ e”字符)。
REPLACE
UPDATE my_table SET my_column = REPLACE (my_column,'a','e' );
这样执行该命令将用’ e* ‘字符更改表的列中所有’ a ‘出现次数。my_column``my_table *
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查询后,只需运行所有查询即可替换所有值。
经过谷歌搜索未经测试
用这样的核心创建一个存储过程。它可以接受表的名称,要查找的值和要替换的值。
主要思想是使用:
请参阅下面的部分代码(未经测试)。
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;