W MySQL w wersji 8.0 i nowszych możesz użyć REGEX_REPLACE()
funkcjonować. W brak to samo
, można wykonać kilka skomplikowanych operacji na ciągach. Jest to oparte na Twoim potwierdzenie
, że wspomniany podciąg występuje tylko raz w wartości.
REPLACE()
nie obsługuje symboli wieloznacznych, wzorców, wyrażeń regularnych itp. Zastępuje tylko dany stały podciąg z innym stałym podciąg, w większym ciągu.
Zamiast tego możemy spróbować wyodrębnić fragmenty
post_content
. Wyodrębnimy wiodący podciąg przed '
część. Substring_Index()
funkcjonować. Podobnie, wyodrębnimy końcowy podciąg po
'">
Teraz możemy po prostu Concat()
te części, aby uzyskać wymagany post_content
. Szczegółowe informacje o różnych funkcjach napisów można znaleźć tutaj:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Dodałem również GDZIE
warunek, abyśmy wybrali tylko te wiersze, które pasują do naszych kryteriów podciągu.
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>%';
Zapytanie nr 1:Dane przed operacjami aktualizacji
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Zapytanie nr 2:Dane po operacjach aktualizacji
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |