Ersetzen Sie einen Teil der Zeichenfolge in der MySQL-Tabellenspalte

Lesezeit: 1 Minute

Ich habe eine WordPress-Installation und ich habe die MySQL-Datenbank beschädigt. Für Beiträge werden die URLs als „…/wordpress//…“ statt „…/wordpress/…“ aufgeführt.

Wie kann ich in SQL jede Zeile in der Tabelle durchgehen und (vielleicht einen regulären Ausdruck verwenden), um jede Instanz von ‘ss//’ durch ‘ss/’ zu ersetzen?

Benutzer-Avatar
Eugen Rieck

UPDATE sometable SET somefield=REPLACE(somefield,'/wordpress//','/wordpress/');

Bearbeiten

@Kevin hat mich gebeten, diese Abfrage zu erklären, also los geht’s:

  • Ich nehme an, das grundsätzliche UPDATE ist klar: In allen Reihen sometable einen neuen Wert zuweisen somefield
  • das REPLACE() Die Funktion macht genau das, was sie sagt: Sie ersetzt Text. In unserem Anwendungsfall nehmen wir den alten Wert von somefielddann ersetzen Sie alle Vorkommen von ‘/wordpress//’ durch ‘/wordpress/’
  • diese beiden Teile zusammengenommen bedeuten, in allen Reihen von sometable zuordnen somefield der Wert, der sich ergibt, wenn man im alten Wert alle Vorkommen von ‘/wordpress//’ durch ‘/wordpress/’ ersetzt.

  • Bitte fügen Sie eine Erklärung hinzu.

    – Kevin

    24. Oktober 2013 um 20:40 Uhr

  • @ Kevin Ich war mir ziemlich sicher, das ist selbsterklärend! Wie auch immer, ich werde eine Erklärung hinzufügen.

    – Eugen Rieck

    24. Oktober 2013 um 20:42 Uhr

  • Super Funktion und gut erklärt!

    – Benjamin

    24. März um 12:12 Uhr

1376110cookie-checkErsetzen Sie einen Teil der Zeichenfolge in der MySQL-Tabellenspalte

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy