MySQL字符串截取更新错误修复:移除指定前缀并清理标签
解决
database_messages表字符串处理问题 先做测试验证(避免再次误清空字段)
先执行查询语句确认处理结果是否符合预期,没问题再执行更新:
SELECT body, -- 移除`][img]`之前的前缀,无匹配则保留原内容 CASE WHEN LOCATE('][img]', body) > 0 THEN SUBSTRING(body, LOCATE('][img]', body) + 6) ELSE body END AS step1_result, -- 再替换多余的`[/url]`标签 REPLACE( CASE WHEN LOCATE('][img]', body) > 0 THEN SUBSTRING(body, LOCATE('][img]', body) + 6) ELSE body END, '[/img][/url]', '[/img]' ) AS final_result FROM database_messages WHERE id_board = 128;
执行正式更新
确认测试结果无误后,运行更新语句:
UPDATE database_messages SET body = REPLACE( CASE WHEN LOCATE('][img]', body) > 0 THEN SUBSTRING(body, LOCATE('][img]', body) + 6) ELSE body END, '[/img][/url]', '[/img]' ) WHERE id_board = 128;
关键注意点
- 用
LOCATE判断是否存在目标字符串,避免因无匹配导致SUBSTRING返回空值(这大概率是你之前字段被清空的原因)。 +6是因为][img]的长度为6,确保从该字符串的下一位开始截取内容。- 先处理前缀移除,再做标签替换,保证逻辑顺序正确。
内容的提问来源于stack exchange,提问作者Mick Javes
相关产品推荐
相关产品推荐

