Nous avons une base de données qui contient un tas d'enregistrements avec des données erronées dans une colonne, dans laquelle un éditeur intégré a échappé à des éléments qui n'auraient pas dû être échappés et il brise les liens générés.
Je souhaite exécuter une requête pour remplacer les mauvais caractères dans tous les enregistrements, mais je ne sais pas comment le faire. J'ai trouvé la replace()
fonction dans MySQL, mais comment puis-je l'utiliser dans une requête?
Par exemple, quelle serait la syntaxe correcte si je voulais remplacer la chaîne <
par un crochet inférieur à angle réel ( <
) dans tous les enregistrements <
de la articleItem
colonne? Est-ce que cela peut être fait en une seule requête (c.-à-d. Sélectionner et tout remplacer en un seul coup), ou dois-je faire plusieurs requêtes? Même s'il s'agit de plusieurs requêtes, comment puis-je utiliser replace()
pour effectuer le remplacement sur la valeur d'un champ sur plus d'un enregistrement?
Réponses:
À un niveau très générique
Dans votre cas, vous dites qu'ils se sont échappés, mais comme vous ne spécifiez pas comment ils se sont échappés, disons qu'ils se sont échappés vers
GREATERTHAN
Étant donné que votre requête va réellement fonctionner à l'intérieur de la chaîne, il
WHERE
est peu probable que votre clause effectuant sa correspondance de modèle améliore les performances - elle va en fait générer plus de travail pour le serveur. À moins que vous n'ayez un autre membre de clause WHERE qui améliorera les performances de cette requête, vous pouvez simplement faire une mise à jour comme celle-ci:Vous pouvez également imbriquer plusieurs
REPLACE
appelsVous pouvez également le faire lorsque vous sélectionnez les données (par opposition à lorsque vous les enregistrez).
Donc au lieu de:
SELECT MyURLString From MyTable
Vous pourriez faire
SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable
la source
la source
<
s. Vous devez utiliser l'encodage de &, comme ceci:&
:)Vérifie ça
Par exemple avec la chaîne d'échantillon:
EG avec nom de colonne / champ:
la source
vous pouvez écrire une procédure stockée comme celle-ci:
De cette façon, vous avez un contrôle modulaire sur la table.
Vous pouvez également généraliser la procédure stockée en la faisant, paramétrique avec table pour sanitoze paramètre d'entrée
la source
Cela vous aidera.
Résultat:
la source