Pomocí následujícího dotazu SQL vygenerujte dotazy SQL, které potřebujete k nahrazení hodnoty ve všech sloupcích.
select concat(
'UPDATE my_table SET ',
column_name,
' = REPLACE(', column_name, ', ''a'', ''e'');')
from information_schema.columns
where table_name = 'my_table';
Po provedení tohoto SQL dotazu jednoduše spusťte všechny dotazy, abyste nahradili všechny hodnoty.
Po chvíli googlování netestováno
Vytvořte uloženou proceduru s takovým jádrem. Může přijmout název tabulky, hodnotu, kterou chcete najít, a hodnotu, kterou chcete nahradit.
Hlavní myšlenkou je použít:
- připravené příkazy pro dynamické provádění SQL;
- kurzory pro iteraci přes všechny sloupce tabulky.
Viz částečný kód (netestováno) níže.
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;