sql >> Database >  >> RDS >> Mysql

Vervang alle velden in MySQL

Gebruik de volgende SQL-query om de SQL-query's te genereren die u nodig hebt om een ​​waarde in alle kolommen te vervangen.

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

Na het uitvoeren van deze SQL-query voert u gewoon alle query's uit om alle waarden te vervangen.

Niet getest na wat googlen

Maak een opgeslagen procedure met een kern zoals deze. Het kan de naam van de tabel accepteren, de waarde die moet worden gevonden en de waarde die moet worden vervangen.

Het belangrijkste idee is om te gebruiken:

  1. voorbereide instructies voor dynamische SQL-uitvoering;
  2. cursors om alle kolommen van een tabel te doorlopen.

Zie gedeeltelijke code (niet getest) hieronder.

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;


  1. Op weg naar Postgres-XL 9.5

  2. Een datum opmaken in T-SQL

  3. Heb ik htmlentities() of htmlspecialchars() nodig in voorbereide statements?

  4. hoe django en mysql te laten werken met UTF-8