que vous voulez faire quelque chose comme ça
update nom_table set nom_colonne = remplacer (nom_colonne, 'http://dev.DrunkOnJudgement.com', 'http://DrunkOnJudgement.com') ; Cela vous permettra de remplacer simplement le texte que vous recherchez dans une colonne spécifique par le texte que vous voulez qu'il soit sans modifier le texte qui l'entoure.
par exemple, vous pouvez simplement réduire à quelque chose comme: remplacer (nom_colonne, « dev.DrunkOnJudgment.com », « DrunkOnJudgment.com »)
Vous pouvez également spécifier une clause where de sorte que vous ne remplacez les éléments contenant ce texte si quelque chose comme ceci:
où column_name comme « % dev.DrunkOnJudgement.com% »
Ok pour faire quelque chose comme ça pour toutes les colonnes de toutes les tables, recherche essentiellement l'ensemble db. Vous pouvez utiliser une déclaration comme ceci:
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
sortie sera une instruction SQL comme celle ci-dessus pour chaque colonne et une table dans la base de données et que vous utilisez un remplacement déclaration si elle ne trouve pas le texte, il ne ne remplacez rien, assurez-vous de ne mettre à jour que les enregistrements qui contiennent effectivement ce texte.
Donc, pour automatiser ce que vous utilisez un curseur, je ne l'ai pas testé le code suivant mais il ressemblerait à quelque chose comme ceci:
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;
Combien de colonnes/tables doivent être modifiées et cela se produit-il dans le texte ou en tant que valeur entière d'un champ. – tobyodavies