替换数据库中的所有字符串实例?

时间:2012-03-24 19:31:03

标签: ruby-on-rails ruby-on-rails-3 string replace

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

例如,我有一些我要替换的传统bb代码......

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

使用::)

1 个答案:

答案 0 :(得分: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]',
        ':)'
    )
})

如果你的源或目标字符串包含引号(或者如果你不是手工编写它们),那么使用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}))
})