В MySQL версия 8.0 и по-нова, можете да използвате REGEX_REPLACE()
функция. В отсъствие на същото
, могат да се извършват някои сложни операции с низове. Това се основава на вашия потвърждение
, че споменатият подниз се среща само веднъж в стойност.
REPLACE()
няма никаква поддръжка за заместващи знаци, шаблони, регулярни изрази и т.н. Той само замества даден фиксиран подниз с друг фиксиран подниз, в по-голям низ.
Вместо това можем да опитаме да извлечем части от
post_content
. Ще извлечем водещия подниз преди '
порция. Substring_Index()код>
функция. По същия начин ще извлечем крайния подниз след
'">
Сега можем просто Concat()
тези части, за да получите необходимия post_content
. Можете да намерите подробности за различни функции на низ, използвани тук:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Добавих и WHERE
условие, така че да избираме само онези редове, които отговарят на дадените ни критерии за подниз.
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>%';
Запитване №1:Данни преди операции за актуализиране
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Заявка №2:Данни след операции по актуализиране
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |