In MySQL versie 8.0 en hoger kunt u
REPLACE()
heeft geen ondersteuning voor wildcards, patronen, reguliere expressies etc. Het vervangt alleen een gegeven vaste substring met een andere vaste subtekenreeks, in een grotere tekenreeks.
In plaats daarvan kunnen we proberen delen van de
post_content
. te extraheren . We extraheren de leidende subtekenreeks vóór de '
deel. Substring_Index()
functie. Op dezelfde manier extraheren we de volgtekenreeks na de '">
Nu kunnen we eenvoudig Concat()
deze delen om de vereiste post_content
. te krijgen . Details van de verschillende String-functies die worden gebruikt, vindt u hier:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Ik heb ook een WHERE
. toegevoegd voorwaarde, zodat we alleen die rijen kiezen die overeenkomen met onze opgegeven substringcriteria.
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>%';
Query #1:Gegevens vóór update-bewerkingen
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Query #2:Gegevens na updatebewerkingen
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |