In MySQL versione 8.0 e successive, puoi utilizzare REGEX_REPLACE()
funzione. In assenza di lo stesso
, è possibile eseguire alcune complicate operazioni sulle stringhe. Questo si basa sul tuo conferma
, che detta sottostringa si verifica solo una volta in un valore.
REPLACE()
non ha alcun supporto per caratteri jolly, pattern, espressioni regolari ecc. Sostituisce solo un dato fisso sottostringa con un'altra fissa sottostringa, in una stringa più grande.
Invece, possiamo provare ad estrarre porzioni di post_content
. Estrarremo la sottostringa iniziale prima di '<p><span id="more-'
utilizzando Substring_Index()
funzione. Allo stesso modo, estrarremo la sottostringa finale dopo il '"></span></p>'
porzione.
Ora possiamo semplicemente Concat()
queste parti per ottenere il post_content
richiesto . Puoi trovare i dettagli delle varie funzioni String utilizzate qui:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
Ho anche aggiunto un WHERE
condizione, in modo da selezionare solo quelle righe che corrispondono ai criteri di sottostringa indicati.
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>%';
Query n. 1:dati prima delle operazioni di aggiornamento
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |
Query n. 2:dati dopo le operazioni di aggiornamento
SELECT * FROM wp_posts;
| post_content |
| -------------------- |
| adasdaadsa121324124 |
| 1412123123adasdaafas |