No MySQL versão 8.0 e superior, você pode usar
REGEX_REPLACE()
função. Na ausência de o mesmo
, algumas operações de string complicadas podem ser feitas. Isso é baseado em seu confirmação
, que a referida substring está ocorrendo apenas uma vez em um valor. REPLACE()
não tem suporte para curingas, padrões, expressões regulares etc. Ele apenas substitui um determinado fixo substring com outro fixo substring, em uma string maior. Em vez disso, podemos tentar extrair partes do
post_content
. Extrairemos a substring inicial antes do '
Substring_Index()
função. Da mesma forma, extrairemos a substring final após o '">
'
parte. Agora, podemos simplesmente
Concat()
essas partes para obter o post_content
necessário . Você pode encontrar detalhes de várias funções de String usadas aqui:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Eu também adicionei um
WHERE
condição, de modo que escolhemos apenas as linhas que correspondem aos nossos critérios de substring fornecidos. 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>%';
Consulta nº 1:dados antes das operações de atualização
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Consulta nº 2:dados após operações de atualização
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |
Visualizar no DB Fiddle