sql >> Base de Datos >  >> RDS >> Mysql

Reemplazar todos los campos en MySQL

Utilice la siguiente consulta SQL para generar las consultas SQL que necesita para reemplazar un valor en todas las columnas.

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

Después de ejecutar esta consulta SQL, simplemente ejecute todas las consultas para reemplazar todos los valores.

No probado después de buscar en Google

Cree un procedimiento almacenado con un núcleo como este. Puede aceptar el nombre de la tabla, el valor a buscar y el valor a reemplazar.

La idea principal es utilizar:

  1. instrucciones preparadas para la ejecución dinámica de SQL;
  2. cursores para recorrer todas las columnas de una tabla.

Ver código parcial (no probado) a continuación.

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;