I MySQL version 8.0 och senare kan du använda code>REGEX_REPLACE() fungera. I frånvaro av samma , kan vissa komplicerade strängoperationer göras. Detta är baserat på ditt bekräftelse , att nämnda delsträng endast förekommer en gång i ett värde.
REPLACE()
har inget stöd för jokertecken, mönster, reguljära uttryck etc. Det ersätter bara en given fixad delsträng med en annan fixad delsträng, i en större sträng.
Istället kan vi försöka extrahera delar av
post_content
. Vi extraherar den inledande delsträngen före '
del. Substring_Index()
fungera. På liknande sätt kommer vi att extrahera den efterföljande delsträngen efter
'">
Nu kan vi helt enkelt Concat()
dessa delar för att få det nödvändiga post_content
. Du kan hitta information om olika strängfunktioner som används här:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Jag har också lagt till en WHERE
villkor, så att vi bara väljer de rader som matchar våra givna delsträngskriterier.
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>%';
Fråga #1:Data före uppdateringsåtgärder
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Fråga #2:Data efter uppdateringsåtgärder
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |