Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Substituir todos os campos no MySQL


Use a consulta SQL a seguir para gerar as consultas SQL necessárias para substituir um valor em todas as colunas.
select concat(
       'UPDATE my_table SET ',
       column_name,
       ' = REPLACE(', column_name, ', ''a'', ''e'');')
from information_schema.columns
where table_name = 'my_table';

Após executar esta consulta SQL, basta executar todas as consultas para substituir todos os valores.

Não testado depois de pesquisar no Google

Crie um procedimento armazenado com um núcleo como este. Ele pode aceitar o nome da tabela, o valor a ser localizado e o valor a ser substituído.

A ideia principal é usar:
  1. instruções preparadas para execução dinâmica de SQL;
  2. cursores para iterar em todas as colunas de uma tabela.

Veja o código parcial (não testado) abaixo.
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;