Dans MySQL version 8.0 et supérieure, vous pouvez utiliser REGEX_REPLACE()
une fonction. En absence de le même
, certaines opérations de chaîne compliquées peuvent être effectuées. Ceci est basé sur votre confirmation
, que ladite sous-chaîne n'apparaît qu'une seule fois dans une valeur.
REPLACE()
ne prend pas en charge les caractères génériques, les modèles, les expressions régulières, etc. Il remplace uniquement un fixe donné sous-chaîne avec un autre fixe sous-chaîne, dans une chaîne plus grande.
Au lieu de cela, nous pouvons essayer d'extraire des parties du post_content
. Nous allons extraire la sous-chaîne principale avant le '<p><span id="more-'
en utilisant Substring_Index()
une fonction. De même, nous allons extraire la sous-chaîne de fin après le '"></span></p>'
portion.
Maintenant, nous pouvons simplement Concat()
ces portions pour obtenir le post_content
requis . Vous pouvez trouver des détails sur les différentes fonctions String utilisées ici :https ://dev.mysql.com/doc/refman/8.0/en/string-functions.html
J'ai également ajouté un WHERE
condition, afin que nous sélectionnions uniquement les lignes qui correspondent à nos critères de sous-chaîne donnés.
UPDATE wp_posts
SET post_content =
CONCAT(
SUBSTRING_INDEX(post_content,
'<p><span id="more-',
1),
SUBSTRING(post_content,
LOCATE('"></span></p>',
post_content,
LOCATE('<p><span id="more-',
post_content)
) + 13) -- 13 is character length of "></span></p>
)
WHERE post_content LIKE '%<p><span id="more-%"></span></p>%';
Requête 1 :Données avant les opérations de mise à jour
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Requête n° 2 :données après les opérations de mise à jour
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |