Mysql
 sql >> база данни >  >> RDS >> Mysql

Заменете всички полета в MySQL

Използвайте следната SQL заявка, за да генерирате SQL заявките, които трябва да замените стойност във всички колони.

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

След като изпълните тази SQL заявка, просто изпълнете всички заявки, за да замените всички стойности.

Нетествано след известно търсене в Google

Създайте съхранена процедура с ядро ​​като това. Може да приеме името на таблицата, стойността за намиране и стойността за замяна.

Основната идея е да използвате:

  1. подготвени оператори за динамично изпълнение на SQL;
  2. курсори за итерация по всички колони на таблица.

Вижте частичен код (нетестван) по-долу.

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. Получаване на последните 5 символа низ с mysql заявка

  2. SQL брои всички редове, вместо да брои отделни редове

  3. Може ли MySQL да преобразува съхранено UTC време в местна часова зона?

  4. Експортиране на Blob от MySQL база данни във файл само с SQL

  5. Как да добавите клауза where в инструкция за вмъкване на MySQL?