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:
- các câu lệnh được chuẩn bị để thực thi SQL động;
- 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;