Werner: MySQL: Zeichenketten in allen DB Einträgen gleichzeitig ändern?

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

  1. 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

    1. Vielen Dank an alle!
      Gruss, Werner

  2. 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%"

    1. 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

      1. 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.

        1. 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