Mysql
 sql >> Database >  >> RDS >> Mysql

Sostituisci tutti i campi in MySQL

Utilizza la seguente query SQL per generare le query SQL necessarie per sostituire un valore in tutte le colonne.

select concat(
       'UPDATE my_table SET ',
       column_name,
       ' = REPLACE(', column_name, ', ''a'', ''e'');')
from information_schema.columns
where table_name = 'my_table';

Dopo aver eseguito questa query SQL, esegui semplicemente tutte le query per sostituire tutti i valori.

Non testato dopo alcune ricerche su Google

Crea una stored procedure con un core come questo. Può accettare il nome della tabella, il valore da trovare e il valore da sostituire.

L'idea principale è usare:

  1. istruzioni preparate per l'esecuzione dinamica di SQL;
  2. Cursori per scorrere tutte le colonne di una tabella.

Vedere il codice parziale (non testato) di seguito.

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;