Mysql
 sql >> Base de données >  >> RDS >> Mysql

Remplacer tous les champs dans MySQL

Utilisez la requête SQL suivante pour générer les requêtes SQL dont vous avez besoin pour remplacer une valeur dans toutes les colonnes.

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

Après avoir exécuté cette requête SQL, exécutez simplement toutes les requêtes pour remplacer toutes les valeurs.

Non testé après quelques recherches sur Google

Créez une procédure stockée avec un noyau comme celui-ci. Il peut accepter le nom de la table, la valeur à rechercher et la valeur à remplacer.

L'idée principale est d'utiliser :

  1. instructions préparées pour l'exécution SQL dynamique ;
  2. des curseurs pour itérer sur toutes les colonnes d'une table.

Voir le code partiel (non testé) ci-dessous.

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;