Ersetzen Sie alle Felder in MySQL
Muss ich ersetzen Sie einige Buchstaben in den Spalten einer Tabelle, mithilfe der REPLACE
Befehl.
Ich weiß, dass die REPLACE
Befehl muss eine Spalte mit dem Namen, dann den text zu ändern (im folgenden Beispiel 'a' char) und den neuen text (im folgenden Fall, die 'e' char).
UPDATE my_table SET my_column = REPLACE (my_column,'a','e' );
So, dass die Ausführung dieser Befehl ändert alle 'eine' vorkommen in den my_column
Spalte der my_table
Tabelle mit den " e' char.
Aber was ist, wenn ich brauchen, um ausführen die REPLACE
Befehl für jede Spalte und nicht nur für eine? Ist das möglich?
Dank
- dba.stackexchange.com/questions/21147/query-to-find-and-replace-text-in-all-tables-and-fields-of-a-mysql-db
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die folgende SQL-Abfrage zum generieren der SQL-Abfragen, die Sie brauchen, um zu ersetzen Sie einen Wert in allen Spalten.
Nach der Ausführung dieser SQL-Abfrage führen Sie einfach alle Abfragen, um zu ersetzen Sie alle Werte.
Ungetestet nach etwas googlen
Erstellen Sie eine gespeicherte Prozedur mit einem Kern wie diesem. Kann es akzeptieren, den Namen der Tabelle, den Wert zu finden und Wert zu ersetzen.
Die Grundidee ist zu verwenden:
Siehe Auszug code (ungetestet) unten.
Machte ich eine kleine änderung:
Welches die variable für TABELLENNAME (nur ein bisschen weniger Tippen) - so brauchen Sie nur zu ersetzen, die in Sachen caps.
Auch, ich hatte zuerst gar nicht verstehen, aber das wird nur Ausgabe eine Liste von SQL-Abfragen, die Sie dann ausführen müssen, um tatsächlich den code zu ersetzen. Hoffe, das hilft...
Wird dies tun die trick-mit etwas PHP, da MySQL Sachen oft mit PHP.
Getestet und funktioniert 🙂
Können Sie nicht tun, was Sie wollen. Wenn es mir war, würde ich eine Liste der Spaltennamen und in meinem editor eine kurze regex suchen und ersetzen.
Find: (.+)
Replace: UPDATE my_table SET \1 = REPLACE (\1,'a','e' );