Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thay thế tất cả các trường trong MySQL

Sử dụng truy vấn SQL sau để tạo các truy vấn SQL mà bạn cần thay thế một giá trị trong tất cả các cột.

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

Sau khi thực hiện truy vấn SQL này, chỉ cần chạy tất cả các truy vấn để thay thế tất cả các giá trị.

Chưa được kiểm tra sau một số googling

Tạo một thủ tục được lưu trữ với một lõi như thế này. Nó có thể chấp nhận tên của bảng, giá trị cần tìm và giá trị để thay thế cho.

Ý tưởng chính là sử dụng:

  1. các câu lệnh được chuẩn bị để thực thi SQL động;
  2. con trỏ để lặp lại trên tất cả các cột của bảng.

Xem một phần mã (chưa được kiểm tra) bên dưới.

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. Tốc độ chèn chậm lại khi bảng phát triển trong mysql

  2. Cách lưu trữ Ký tự Emoji trong Cơ sở dữ liệu MySQL

  3. Chèn và đặt giá trị với sự cố max () + 1

  4. lưu cài đặt MySQL

  5. MySQL dual master