1

我在很多记录中都有这个字符串[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”不是固定的,这些是随机字符。

4

1 回答 1

0

假设您的所有标签格式正确,以下代码应该可以解决问题。请在针对生产副本运行之前进行彻底测试。

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 '[%:%]';

更新小提琴

编辑#2

我的WHERE条款太严格了。这是一个稍微更新的脚本:

UPDATE post
SET pagetext = REPLACE(pagetext, SUBSTR(pagetext, @c1:=INSTR(pagetext,':'), LOCATE(']', pagetext, @c1) - @c1), '')
WHERE pagetext LIKE '%[%:%]%';

我更改了Fiddle以更新另一列 ( newtext),因此更容易判断结果。

于 2013-05-18T18:45:52.777 回答