I MySQL version 8.0 og nyere kan du bruge kode>REGEX_REPLACE() fungere. I fravær af det samme , kan nogle komplicerede strengoperationer udføres. Dette er baseret på din bekræftelse , at den nævnte understreng kun forekommer én gang i en værdi.
REPLACE()
understøtter ikke jokertegn, mønstre, regulære udtryk osv. Det erstatter kun en given fast understreng med en anden fast understreng, i en større streng.
I stedet kan vi prøve at udtrække dele af
post_content
. Vi vil udtrække den førende understreng før '
del. Substring_Index()
fungere. På samme måde vil vi udtrække den efterfølgende understreng efter
'">
Nu kan vi simpelthen Concat()
disse dele for at få det nødvendige post_content
. Du kan finde detaljer om forskellige strengfunktioner, der bruges her:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Jeg har også tilføjet en WHERE
betingelse, så vi kun vælger de rækker, der matcher vores givne understrengkriterier.
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>%';
Forespørgsel #1:Data før opdateringshandlinger
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Forespørgsel #2:Data efter opdateringshandlinger
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |