次の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クエリを実行した後、すべてのクエリを実行してすべての値を置き換えます。
グーグルした後はテストされていません
このようなコアを使用してストアドプロシージャを作成します。テーブルの名前、検索する値、および置き換える値を受け入れることができます。
主なアイデアは次を使用することです:
- 動的SQL実行用のプリペアドステートメント;
- テーブルのすべての列を反復処理するカーソル。
以下の部分的なコード(テストされていない)を参照してください。
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;