Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zamień wszystkie pola w MySQL

Użyj następującego zapytania SQL, aby wygenerować zapytania SQL, które musisz zastąpić wartością we wszystkich kolumnach.

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

Po wykonaniu tego zapytania SQL po prostu uruchom wszystkie zapytania, aby zastąpić wszystkie wartości.

Nie testowano po pewnym googlowaniu

Utwórz procedurę składowaną z rdzeniem takim jak ten. Może zaakceptować nazwę tabeli, wartość do znalezienia i wartość do zastąpienia.

Główną ideą jest użycie:

  1. przygotowane instrukcje do dynamicznego wykonywania SQL;
  2. kursory do iteracji po wszystkich kolumnach tabeli.

Zobacz kod częściowy (nieprzetestowany) poniżej.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ON DUPLICATE KEY UPDATE podczas wstawiania zestawu wyników z zapytania

  2. Konwertuj tekst na liczbę w zapytaniu MySQL

  3. Jak utrzymać ograniczenie klucza obcego w różnych bazach danych?

  4. MySQL:indeks złożony pełny tekst + btree?

  5. Wybierz najwyższe 3 wyniki każdego dnia dla każdego użytkownika