sql >> Databasteknik >  >> RDS >> Mysql

Ersätt alla fält i MySQL

Använd följande SQL-fråga för att generera de SQL-frågor som du behöver för att ersätta ett värde i alla kolumner.

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

Efter att ha kört denna SQL-fråga, kör helt enkelt alla frågor för att ersätta alla värden.

Otestad efter lite googling

Skapa en lagrad procedur med en kärna som denna. Den kan acceptera namnet på tabellen, värdet att hitta och värdet som ska ersättas för.

Huvudidén är att använda:

  1. förberedda satser för dynamisk SQL-körning;
  2. markörer för att iterera över alla kolumner i en tabell.

Se delkod (otestad) nedan.

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. Hur man hanterar fel i SQL Server-kapslade transaktioner

  2. Django MySQL distinkt fråga för att få flera värden

  3. Ansluter till Vertica i IRI Workbench

  4. Använda Jenkins med Kubernetes AWS, del 1