V MySQL verze 8.0 a vyšší můžete použít REGEX_REPLACE()
funkce. V absence totéž
lze provádět některé složité operace s řetězci. Toto je založeno na vašem potvrzení
, že uvedený podřetězec se v hodnotě vyskytuje pouze jednou.
REPLACE()
nemá žádnou podporu pro zástupné znaky, vzory, regulární výrazy atd. Nahrazuje pouze danou pevnou podřetězec s jiným pevným podřetězec ve větším řetězci.
Místo toho se můžeme pokusit extrahovat části
post_content
. Extrahujeme úvodní podřetězec před '
část. Substring_Index()
funkce. Podobně extrahujeme koncový podřetězec za
'">
Nyní můžeme jednoduše Concat()
tyto části, abyste získali požadovaný post_content
. Podrobnosti o různých funkcích String používaných zde:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Také jsem přidal WHERE
podmínku, takže vybereme pouze ty řádky, které odpovídají našim daným kritériím podřetězce.
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>%';
Dotaz č. 1:Data před operacemi aktualizace
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Dotaz č. 2:Data po operacích aktualizace
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |