MYSQL数据库替换删除内容命令-文章首尾筛选替换
MySQL 8版本以下不支持正则,可以使用以下的替换方式,8以上使用正则或者以下方式皆可。
示例:删除 [HideArea]隐藏/HideArea] 短代码及其内容,”里面就是替换后的内容,为空就是删除了。
包含短代码标签的替换:
UPDATE zbp_post SET log_Content = REPLACE(log_Content, SUBSTRING(log_Content, LOCATE('[HideArea]', log_Content), LOCATE('[/HideArea]', log_Content) + LENGTH('[/HideArea]') - LOCATE('[HideArea]', log_Content)), '') WHERE log_Content LIKE '%[HideArea]%';
只替换里面的内容,不包含短代码标签
UPDATE zbp_post SET log_Content = REPLACE(log_Content, SUBSTRING(log_Content, LOCATE('[HideArea]', log_Content) + LENGTH('[HideArea]'), LOCATE('[/HideArea]', log_Content) - (LOCATE('[HideArea]', log_Content) + LENGTH('[HideArea]'))), '') WHERE log_Content LIKE '%[HideArea]%';
解释:
LOCATE(‘[HideArea]’, log_Content) + LENGTH(‘[HideArea]’):找到 [HideArea] 标签的结束位置(即标签内容的起始位置)。
LOCATE(‘[/HideArea]’, log_Content):找到 [/HideArea] 标签的位置。
LOCATE(‘[/HideArea]’, log_Content) – (LOCATE(‘[HideArea]’, log_Content) + LENGTH(‘[HideArea]’)):计算 [HideArea] 和 [/HideArea] 之间的内容长度。
SUBSTRING(log_Content, start_position, length):提取 [HideArea] 和 [/HideArea] 之间的内容。
REPLACE(log_Content, substring, ”):将提取出的内容替换为空字符串,即删除内容。