我有这样的文字:
<p>[img ret872154ftu] fileaddress [/img ret872154ftu]</p>
<p>[img fd68721cvn] fileaddress [/img fd68721cvn]</p>
<p>[img xdfh654t] fileaddress [/img xdfh654t]</p>
我喜欢改变这个
<p>[img] fileaddress [/img]</p>
<p>[img] fileaddress [/img]</p>
<p>[img] fileaddress [/img]</p>
此代码经过测试但未运行
UPDATE `table` SET `name` = replace(`name`, '[img (anything)', '[/img]');
请帮助
答案 0 :(得分:2)
如果你在fileaddress之前和之后总是有空格,这将提取fileaddress部分:
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '] ', -1),
' [', 1);
然后您可以使用此更新查询:
UPDATE `table`
SET `name` = CONCAT(
'<p>[img] ',
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '] ', -1),
' [', 1),
' [/img]</p>');
请参阅小提琴here。
编辑:遗憾的是,MySQL对正则表达式的支持非常有限。您可以尝试使用这种快速而肮脏的解决方案,在多种情况下它可能会失败,但它可能会起作用:
UPDATE tablename
SET
name =
CONCAT(
SUBSTRING_INDEX(name, '[img', 1),
'[img]',
SUBSTRING_INDEX(
SUBSTRING_INDEX(
SUBSTRING_INDEX(name, '[img', -1),
'[/img',
1),
']',
-1),
'[/img]',
SUBSTRING_INDEX(name, ']', -1)
)
小提琴是here。