Используйте следующий запрос 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;