UPDATE [Tabellenname] SET [Feldname] = REPLACE ( [field_name], "foo", "bar");
Meetai.com
6
Ich denke, es ist schneller, es nicht zu verwenden WHERE instr(field, 'foo') > 0;(es würde also keine 2 Suchvorgänge durchführen) ... irre ich mich?
Inemanja
2
@treddell, in SQL-Strings beginnen keine Positionen bei 1.
Alexis Wilke
2
@inemanja, @Air ohne die WHEREKlausel, die Sie UPDATEin allen Zeilen machen ...
Alexis Wilke
7
Wenn Sie wie Pring einen solchen Kommentar hinterlassen möchten, möchten Sie vielleicht erklären, warum. War es ein Fehler im ursprünglichen Rat oder ein Fehler von Ihrer Seite? Und Sie wissen, dass Sie, bevor Sie umfassende Änderungen an einer Datenbank vornehmen, diese zuerst sichern sollten?
pdwalker
86
UPDATE table_name
SET field = replace(field,'string-to-find','string-that-will-replace-it');
Funktioniert für mich, weil ich eine weitere Klausel hinzufügen muss, wo. UPDATE Tabellenname SET Feld = REPLACE (Feld, 'foo', 'bar') WHERE Feld WIE '% foo%' UND otherfield = 'foo22'
Max
1
Die Funktion "Zeichenfolge ersetzen" übernimmt dies.
Funktioniert bei mir. Es hängt davon ab, wie Sie die Frage interpretieren. Wenn Sie die Datenbankeinträge ändern müssen, verwenden Sie update. Ansonsten ist diese Lösung viel besser, da sie ohne Aktualisierung der Felder verwendet werden kann.
Gruber
0
Ich habe die obige Befehlszeile wie folgt verwendet: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'und'); Der Zweck war, Und durch und zu ersetzen ("A" sollte Kleinbuchstaben sein). Das Problem ist, dass es das "Und" in der Datenbank nicht finden kann, aber wenn ich "% und%" verwende, kann es es zusammen mit vielen anderen Ands finden, die Teil eines Wortes sind oder sogar solche, die bereits in Kleinbuchstaben geschrieben sind.
[field_name]
, "foo", "bar");WHERE instr(field, 'foo') > 0;
(es würde also keine 2 Suchvorgänge durchführen) ... irre ich mich?WHERE
Klausel, die SieUPDATE
in allen Zeilen machen ...quelle
Wie zum Beispiel, wenn ich alle Vorkommen von John durch Mark ersetzen möchte, werde ich unten verwenden,
quelle
Und wenn Sie basierend auf dem Wert eines anderen Felds suchen und ersetzen möchten, können Sie eine CONCAT durchführen:
Nur um dieses hier zu haben, damit andere es sofort finden.
quelle
Nach meiner Erfahrung ist die schnellste Methode
Der
INSTR()
Weg ist der zweitschnellste und das Weglassen derWHERE
Klausel insgesamt ist am langsamsten, selbst wenn die Spalte nicht indiziert ist.quelle
Die Funktion "Zeichenfolge ersetzen" übernimmt dies.
quelle
update
. Ansonsten ist diese Lösung viel besser, da sie ohne Aktualisierung der Felder verwendet werden kann.Ich habe die obige Befehlszeile wie folgt verwendet: update TABLE-NAME set FIELD = replace (FIELD, 'And', 'und'); Der Zweck war, Und durch und zu ersetzen ("A" sollte Kleinbuchstaben sein). Das Problem ist, dass es das "Und" in der Datenbank nicht finden kann, aber wenn ich "% und%" verwende, kann es es zusammen mit vielen anderen Ands finden, die Teil eines Wortes sind oder sogar solche, die bereits in Kleinbuchstaben geschrieben sind.
quelle