Използвайте следната 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 заявка, просто изпълнете всички заявки, за да замените всички стойности.
Нетествано след известно търсене в Google
Създайте съхранена процедура с ядро като това. Може да приеме името на таблицата, стойността за намиране и стойността за замяна.
Основната идея е да използвате:
- подготвени оператори за динамично изпълнение на 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;