Teile von BLOB nach anderer Tabelle ersetzen

Begonnen von netaction2, 03. Oktober 2007, 14:48:54

Vorheriges Thema - Nächstes Thema

netaction2

Hallo!
Ich habe zwei Tabellen:
texte: `id` INT, `text` MEDIUMBLOG
ersatz: `neu` VARCHAR, `alt` MEDIUMBLOB
Jetzt soll in dem `text` einer bestimmten `id`, also in einem bestimmten Eintrag der Tabelle texte, die Ersetzung vorgenommen werden.
Und zwar sollen alle Vorkommen von `alt` durch den jeweils dazugehörenden String `neu` ersetzt werden.
Ich würde es gerne möglichst viel in MySQL lösen, die Oberfläche ist in PHP geschrieben.
Hat jemand einen Vorschlag?
Thomas


netaction2

UPDATE tabelle SET `text` = REPLACE(`text`,vorher,nachher);
Jetzt brauche ich noch eine Schleife, die ersatz durchgeht, und ich muss die Werte in vorher und nachher einbauen.

Du kannst mit WHERE auch eingrenzen. Schleifen gibt  es in MySQL so nicht - das solltest Du applikationsseitig lösen. Wenn das eine einmalige Sache ist, geht das vermutlich über die Kommandozeile direkt auf der DB schneller.

netaction2

Eingrenzen muss ich auch noch, ich will ja nur den \'text\' von einer bestimmten \'id\' durchgehen. Das ist klar.
Ich dachte, Schleifen würden so funktionieren:
http://dev.mysql.com/doc/refman/5.1/de/while-statement.html\" rel=\"external nofollow\">http://dev.mysql.com/doc/refman/5.1/de/while-statement.html
Ich kann nicht \"select * from ersetzen\" machen und dann in PHP mit foreach und str_replace arbeiten, weil ich dabei einige Megabytes schaufeln würde. Und die Aufgabe muss recht häufig ausgeführt werden.

Ja, Du kannst WHILE benutzen. Aber ich rate üblicherweise davon ab - man muss ganz genau wissen, was man tut.
Ich schrieb ja, dass man regelmäßige Aufgaben besser über die Kommandozeile löst - und dann auf PHP nach Möglichkeit verzichtet. YMMV.

all your base are belong to us / Discord