Ich habe eine Spalte mit URLs (ID, URL):
http://www.example.com/articles/updates/43
http://www.example.com/articles/updates/866
http://www.example.com/articles/updates/323
http://www.example.com/articles/updates/seo-url
http://www.example.com/articles/updates/4?something=test
Ich möchte das Wort "Updates" in "Nachrichten" ändern. Ist das mit einem Skript möglich?
Antworten:
Nun Reihen, die wie waren
http://www.example.com/articles/updates/43
wird sein
http://www.example.com/articles/news/43
http://www.electrictoolbox.com/mysql-find-replace-text/
quelle
WHERE LIKE
Klausel nicht unbedingt am Ende hinzufügen , denn wenn der zu findende Text nicht vorhanden ist, wird die Zeile nicht aktualisiert, aber es sollte die Dinge beschleunigen . ""LIKE '%%'
keine Indizes verwendet, wenn es andere Teile in diesem WHERE gäbe, zum Beispiel etwas wiedate_added > '2014-07-01'
es hätte helfen könnenJa, MySQL hat eine REPLACE () -Funktion:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
Beachten Sie, dass es einfacher ist, wenn Sie dies bei der Verwendung als Alias festlegen
SELECT
quelle
updates
nur einmal in der Zeichenfolge angezeigt werden, würde dies funktionieren. Andernfalls stecken Sie in der direkten Manipulation von Zeichenfolgen fest, was in MySQL ein echtes Problem darstellt. An diesem Punkt wäre es einfacher, ein einmaliges Skript zu schreiben, um die Felder auszuwählen, im Client zu manipulieren und dann zurückzuschreiben.Die Ersetzungsfunktion sollte für Sie funktionieren.
Gibt den String str zurück, wobei alle Vorkommen des Strings from_str durch den String to_str ersetzt werden.
REPLACE()
führt bei der Suche nach from_str eine Übereinstimmung zwischen Groß- und Kleinschreibung durch.quelle
Sie können einfach die Funktion replace () verwenden.
Hinweis: Die obige Abfrage, wenn Sie Datensätze direkt in der Tabelle aktualisieren möchten, wenn Sie eine ausgewählte Abfrage wünschen und die Daten in der Tabelle nicht betroffen sein sollen, kann die folgende Abfrage verwenden:
quelle
Zusätzlich zu gmaggios Antwort, wenn Sie dynamisch
REPLACE
undUPDATE
gemäß einer anderen Spalte arbeiten müssen, können Sie zum Beispiel Folgendes tun:In meinem Beispiel ist die Zeichenfolge
articles/news/
in gespeichert,other_table t2
undLIKE
dieWHERE
Klausel muss nicht verwendet werden.quelle