;
これにより、特定の列で探しているテキストを、周囲のテキストを変更せずに、そのテキストに置き換えることができます。
ので、たとえばあなただけのような何かにそれを短縮することができます:あなたが唯一置き換えるように置き換える(column_nameに、「dev.DrunkOnJudgment.com」、「DrunkOnJudgment.com」)
また、where句を指定することができます
[OK]を「%dev.DrunkOnJudgement.com%」のようなcolumn_nameには、全体のDBを検索し、基本的に、すべてのテーブルのすべての列のためにこのような何かを行うには
:ので、このような何かを、そのテキストを含むアイテム。それはそれがないテキストが見つからない場合には、出力データベース内およびので、各列とテーブルの上のようなSQL文はあなたが文を置き換える使用しています
SELECT Concat('UPDATE ', TABLE_NAME, ' SET ', COLUMN_NAME, ' = REPLACE(', COLUMN_NAME, ',''dev.DrunkOnJudgment.com'',''DrunkOnJudgment.com'')', ' WHERE ', COLUMN_NAME, ' like ''%dev.DrunkOnJudgment.com%''') FROM INFORMATION_SCHEMA.COLUMNS
:あなたは、このようなステートメントを使用することができます何も置き換えないと、実際にそのテキストを含むレコードのみを更新することができます。
だから、このカーソルを使用し自動化するために、私は次のコードをテストしていませんが、それはこのようなものになります。私は手遅れだと思い、あなたの製品のライフサイクルにおけるこの時点で
DECLARE done BOOLEAN DEFAULT 0;
DECLARE sql VARCHAR(2000);
DECLARE cmds CURSOR
FOR
SELECT Concat('UPDATE ', TABLE_NAME, ' SET ', COLUMN_NAME, ' = REPLACE(', COLUMN_NAME, ',''dev.DrunkOnJudgment.com'',''DrunkOnJudgment.com'')', ' WHERE ', COLUMN_NAME, ' like ''%dev.DrunkOnJudgment.com%''') FROM INFORMATION_SCHEMA.COLUMN;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN cmds;
REPEAT
FETCH cmds INTO sql;
PREPARE stmt FROM sql;
EXECUTE stmt;
DROP PREPARE stmt;
UNTIL done END REPEAT;
CLOSE cmds;
修正する必要のある列/テーブルの数は、テキスト内またはフィールドの値全体として発生します。 – tobyodavies