I would like to run this type of query on my WP database to remove all span instances with id="more-":
UPDATE wp_posts SET post_content = REPLACE (
post_content,
'<p><span id="more-35075"></span></p>',
'');
But the number that follows the 'more-' in my example is a variable. How to write this query with someting like a wildcard: span id="more-*.
Thank you
In MySQL version 8.0 and above, you can use
REGEX_REPLACE()
function. In absence of the same, some complicated string operations can be done. This is based on your confirmation, that the said sub-string is occurring only once in a value.REPLACE()
does not have any support for wildcards, patterns, regular expressions etc. It only replaces a given fixed substring with another fixed substring, in a bigger string.Instead, we can try to extract portions of the
post_content
. We will extract the leading substring before the'<p><span id="more-'
usingSubstring_Index()
function. Similarly, we will extract the trailing substring after the'"></span></p>'
portion.Now, we can simply
Concat()
these portions to get the requiredpost_content
. You can find details of various String functions used here: https://dev.mysql.com/doc/refman/8.0/en/string-functions.htmlI have also added a
WHERE
condition, so that we pick only those rows which match our given substring criteria.Query #1: Data before Update operations
Query #2: Data after Update operations
View on DB Fiddle