我想在我的WP数据库上运行这种类型的查询,以删除所有id =“ more-”的跨度实例:
img_m = sitk.ConnectedThreshold(img2[:,:,7], [(257,419)])
但是在我的示例中,“ more-”后面的数字是一个变量。如何使用通配符之类的方式编写此查询:span id =“ more-*。
谢谢
答案 0 :(得分:2)
在MySQL 8.0及更高版本中,您可以使用REGEX_REPLACE()
函数。在absence of the same中,可以完成一些复杂的字符串操作。这基于您的confirmation,该子字符串在一个值中仅出现一次。
REPLACE()
不支持通配符,模式,正则表达式等。它仅将给定的 fixed 子字符串替换为另一个 fixed 子字符串,更大的字符串。
相反,我们可以尝试提取var something = "apple";
var yesOrNo = something == "apple" ? "yes" : "no";
var result = $"Is it an apple? {yesOrNo}!";
的一部分。我们将使用Substring_Index()
函数在post_content
之前提取前导子字符串。同样,我们将提取'<p><span id="more-'
部分之后的结尾子字符串。
现在,我们只需Concat()
这些部分即可获得所需的'"></span></p>'
。您可以在此处找到各种String函数的详细信息:https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
我还添加了一个post_content
条件,以便我们仅选择与给定子字符串条件匹配的行。
WHERE
查询1:更新操作之前的数据
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>%';
查询2:更新操作后的数据
SELECT * FROM wp_posts;
| post_content |
| ------------------------------------------------------- |
| adasdaadsa<p><span id="more-35075"></span></p>121324124 |
| 1412123123<p><span id="more-232"></span></p>adasdaafas |