2012-03-24 132 views
1

循环遍历表中的所有条目并将所有字符串的实例替换为另一个字符串的最有效方法是什么?替换数据库中的所有字符串实例?

举例来说,我已经得到了我想要替换一些旧式BB代码...

更换:[img]/images/emoticons/happy.png[/img]<img src="/images/emoticons/happy.png">

有了::)

回答

0

最快的方法是让数据库完成所有工作:

connection.execute(%q{ 
    update your_table 
    set your_column = replace(
     replace(
      your_column, 
      '<img src="/images/emoticons/happy.png">', 
      ':)' 
     ), 
     '[img]/images/emoticons/happy.png[/img]', 
     ':)' 
    ) 
}) 

如果您的源或目标字符串包含引号(或者如果您不是wr然后使用connection.quote

from1 = connection.quote('<img src="/images/emoticons/happy.png">') 
from2 = connection.quote('[img]/images/emoticons/happy.png[/img]') 
to = connection.quote(':)') 
connection.execute(%Q{ 
    update your_table 
    set your_column = replace(replace(your_column, #{from1}, #{to}), #{from2}, #{to})) 
}) 
相关问题