MySQL: Zeichenketten in allen DB Einträgen gleichzeitig ändern?
Werner
- datenbank
Hallo,
ich habe in meiner Datenbank bei vielen Einträgen immer den gleichen Text (einen Link), den ich nun für alle Einträge gleichzeitig ändern möchte. Anzeigen geht ja so:
SELECT * FROM tabelle WHERE eintrag LIKE "%meinlink%"
Nun will ich alle Updaten mit einem neuen Text, kriege aber die Anweisung nicht zusammen. Kann mir jemand helfen?
Vielen Dank im Voraus,
Grüsse aus Berlin,
Werner
Hallo Werner,
UPDATE tabelle SET Spalte_1=neuerText [WHERE where_definition]
Der Ausdruck SET zeigt an, welche Spalten modifiziert werden sollen. Die Option WHERE, gibt die Reihe an, andernfalls werden alle Reihen modifiziert.
Gruß Gunther
Vielen Dank an alle!
Gruss, Werner
Hallo Werner,
update tabelle set eintrag='so macht man das'
where eintrag LIKE '%meinlink%'
Vergesse nicht die where bedingung sonst werden
alle Felder(EINTRAG) geändert.
Gruss Nikki
ich habe in meiner Datenbank bei vielen Einträgen immer den gleichen Text (einen Link), den ich nun für alle Einträge gleichzeitig ändern möchte. Anzeigen geht ja so:
SELECT * FROM tabelle WHERE eintrag LIKE "%meinlink%"
Hallo Nikki,
update tabelle set eintrag='so macht man das'
where eintrag LIKE '%meinlink%'
Damit ersetzt Du jeden Eintrag, in dem der Link vorkommt, durch den neuen Text, den würde Werner glaube ich aber ganz gerne behalten ;-).
Lieber so:
UPDATE tabelle SET eintrag=REPLACE(eintrag,'www.alterlink.de','www.neuerlink.de') where eintrag LIKE '%www.alterlink.de%'
Die where-condition ist eigentlich nicht nötig, d.h. ändert nichts am Ergebnis, aber ich könnte mir vorstellen, daß es vielleicht ein bißchen schneller geht.
Viele Grüße
Stephan
Hallo Stephan,
na ich bin mir bei deinem Query nicht so sicher...
Zitat MYSQL MANUAL:
--------------------------
REPLACE funktioniert genau wie INSERT, ausser dass der alte Datensatz gelöscht wird, bevor ein neuer eingefügt wird, wenn ein alter Datensatz in der Tabelle denselben Wert wie der neue auf einem eindeutigen Index hat.
Mit anderen Worten können Sie auf die Werte einer alten Zeile nicht mit einem REPLACE-Statement zugreifen. In einigen alten MySQL-Versionen sah es so aus, als könnten Sie das tun, aber das war ein Bug und wurde korrigiert.
--------------------------------
UPDATE tabelle SET eintrag=REPLACE(eintrag,'www.alterlink.de','www.neuerlink.de') where eintrag LIKE '%www.alterlink.de%'
Die where-condition ist eigentlich nicht nötig, d.h. ändert nichts am Ergebnis, aber ich könnte mir vorstellen, daß es vielleicht ein bißchen schneller geht.
Hallo Nicole,
Zitat MYSQL MANUAL:
REPLACE funktioniert genau wie INSERT, ausser dass der alte Datensatz gelöscht wird, bevor ein neuer eingefügt wird, wenn ein alter Datensatz in der Tabelle denselben Wert wie der neue auf einem eindeutigen Index hat.
Es gibt REPLACE als alias für insert, und als String-Funktion, das sind zwei verschiedene Dinge.
Viele Grüße
Stephan