phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Requête SQL pour remplacer la chaîne basée sur le caractère générique

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 |

Voir sur DB Fiddle