2012-03-24 15 views
1

Was ist der effizienteste Weg, um alle Einträge in einer Tabelle durchzugehen und alle Instanzen eines Strings durch einen anderen zu ersetzen.Ersetzen Sie alle Instanzen der Zeichenfolge in der Datenbank?

Zum Beispiel habe ich einige Vermächtnis bb Code, die ich ersetzen wollen ...

ersetzen: [img]/images/emoticons/happy.png[/img] oder <img src="/images/emoticons/happy.png">

mit: :)

Antwort

0

Der schnellste Weg wäre zu lassen die Datenbank erledigt die ganze Arbeit:

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]', 
     ':)' 
    ) 
}) 

Wenn Ihre Quell- oder Zielzeichenfolgen Zitate enthalten (oder wenn Sie nicht wr von Hand), dann verwenden Sie 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})) 
}) 
Verwandte Themen