我在许多记录[spoiler:abcdefgh]
中都有这个字符串。 abcdefgh
是可变字符。我希望这成为[spoiler]
。所以我想删除:abcdefgh
。
我知道查询是:
UPDATE post
SET pagetext = replace(pagetext, ‘text you want to replace’, ‘replacament text’);
如何替换变量字符?
例如,如果我有[center:uezfbb79]texttt[/center:uezfbb79]
,那么我希望它成为:[center]texttt[/center]
“uezfbb79”未修复,这些是随机字符。
答案 0 :(得分:0)
假设所有标记格式正确,以下代码应该可以解决问题。请在针对生产副本运行之前测试 throroughly 。
UPDATE post
SET pagetext = REPLACE(pagetext, SUBSTR(pagetext, INSTR(pagetext,':'), INSTR(pagetext, ']') - INSTR(pagetext,':')), '')
WHERE pagetext LIKE '[%:%]';
这是 SQL Fiddle 我用于非常有限测试。
修改强>
此脚本应正确处理前面的[]
情况:
UPDATE post
SET pagetext = REPLACE(pagetext, SUBSTR(pagetext, @c1:=INSTR(pagetext,':'), LOCATE(']', pagetext, @c1) - @c1), '')
WHERE pagetext LIKE '[%:%]';
<强> Updated Fiddle 强>
编辑#2
我的WHERE
条款限制性太强。这是一个略微更新的脚本:
UPDATE post
SET pagetext = REPLACE(pagetext, SUBSTR(pagetext, @c1:=INSTR(pagetext,':'), LOCATE(']', pagetext, @c1) - @c1), '')
WHERE pagetext LIKE '%[%:%]%';
我更改了 Fiddle 以更新另一列(newtext
),因此更容易判断结果。