2012-03-24 180 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})) 
}) 
相關問題