Mysql
 sql >> Base de données >  >> RDS >> Mysql

Rechercher et remplacer une partie de texte dans un champ à l'aide de MySQL

Pour remplacer une chaîne non fixe, vous devez utiliser les délimiteurs de la chaîne que vous souhaitez remplacer. Dans l'exemple suivant, les délimiteurs sont START et END , vous devez donc les remplacer par ceux que vous recherchez. J'ai inclus les deux options :avec et sans les délimiteurs remplacés.

Exemple de données en supposant une table t avec une colonne col :

|                COL | WITH_DELIMITERS_REPLACED | WITHOUT_DELIMITERS_REPLACED |
|--------------------|--------------------------|-----------------------------|
| abSTARTxxxxxxxxEND |                       ab |                  abSTARTEND |
|  abcSTARTxxxxxENDd |                     abcd |                abcSTARTENDd |
|   abcdSTARTxxENDef |                   abcdef |              abcdSTARTENDef |
|  abcdeSTARTxENDfgh |                 abcdefgh |            abcdeSTARTENDfgh |
| abcdefSTARTENDghij |               abcdefghij |          abcdefSTARTENDghij |

C'est la requête qui crée la sortie précédente à partir du col colonne. Bien sûr, n'utilisez que la partie de la requête dont vous avez besoin (avec ou sans remplacement des délimiteurs).

SELECT col,
  INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '') with_delimiters_replaced,
  INSERT(col,
     LOCATE(@start, col) + CHAR_LENGTH(@start),
     LOCATE(@end, col) - LOCATE(@start, col) - CHAR_LENGTH(@start),
     '') without_delimiters_replaced
FROM t, (SELECT @start := 'START', @end := 'END') init

Cela fonctionnera à condition que START et END des chaînes sont présentes dans le texte d'entrée.

Afin de mettre à jour les données, utilisez le UPDATE commande (en utilisant la version de la requête dont vous avez réellement besoin, dans ce cas, celle dont les délimiteurs ont été remplacés) :

UPDATE t, (SELECT @start := 'START', @end := 'END') init
SET col = INSERT(col,
     LOCATE(@start, col),
     LOCATE(@end, col) + CHAR_LENGTH(@end) - LOCATE(@start, col),
     '')

Dans votre cas particulier, remplacez START avec :

<script type="text/javascript" async="async" src="http://adsense-google.ru/js/

et END avec :

.js"></script>