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, ”):将提取出的内容替换为空字符串,即删除内容。

吃瓜生活驿站
赛高次元

发表评论