Aktualisieren Sie einen Spaltenwert und ersetzen Sie einen Teil einer Zeichenfolge


325

Ich habe eine Tabelle mit den folgenden Spalten in einer MySQL-Datenbank

[id, url]

Und die URLs sind wie:

 http://domain1.com/images/img1.jpg

Ich möchte alle URLs auf eine andere Domain aktualisieren

 http://domain2.com/otherfolder/img1.jpg

Behalten Sie den Namen der Datei bei.

Welche Abfrage muss ich ausführen?


Mögliches Duplikat der MySQL-Zeichenfolge ersetzen
Steve Chambers

Antworten:



162
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');

relevante Dokumente: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace


13
Hallo, warum brauche ich das wo?
Guy Cohen

14
@GuyCohen Da sonst die Abfrage jede einzelne Zeile in der Tabelle ändert. Die WHEREKlausel optimiert die Abfrage so, dass nur die Zeilen mit einer bestimmten URL geändert werden. Logischerweise ist das Ergebnis das gleiche, aber das Hinzufügen von WHEREbeschleunigt den Vorgang.
Dmytro Shevchenko

3
Dadurch wird WHEREauch sichergestellt, dass Sie nur Teile von Zeichenfolgen ersetzen, die mit http://etc/etc/oder beginnen.string_to_be_replaced. In der angegebenen Antwort http://domain1.com/images/this/is/a/testwäre dies beispielsweise betroffen, jedoch foobar/http://domain1.com/images/nicht.
Kyle Challis


9

Sie benötigen die WHERE- Klausel, um NUR die Datensätze zu ersetzen , die der Bedingung in der WHERE-Klausel entsprechen (im Gegensatz zu allen Datensätzen). Sie verwenden das % -Zeichen, um eine Teilzeichenfolge anzugeben: IE

LIKE ('...//domain1.com/images/%');

Mittel alle Datensätze, die BEGIN mit "...//domain1.com/images/"und etwas AFTER haben (die das ist %für ...)

Ein anderes Beispiel:

LIKE ('%http://domain1.com/images/%')

was bedeutet, alle Datensätze, die enthält "http://domain1.com/images/"

in irgendeinem Teil der Zeichenfolge ...


7

Versuche dies...

update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]');

1

Zuerst muss überprüft werden

SELECT * FROM universityWHERE Kursname LIKE '% & amp%'

Als nächstes muss aktualisiert werden

UPDATE Universität SET Kursname = REPLACE (Kursname, '& amp', '&') WHERE ID = 1

Ergebnisse: Engineering & Amp Technology => Engineering & Technology

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.