643 Stimmen

MySQL String ersetzen

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 würde gerne das Wort "Updates" in "News" ändern. Ist es möglich, dies mit einem Skript zu tun?

1454voto

Giraldi Punkte 15471
UPDATE your_table
SET your_field = REPLACE(your_field, 'articles/updates/', 'articles/news/')
WHERE your_field LIKE '%articles/updates/%'

Reihen, die wie

http://www.example.com/articles/updates/43

wird sein

http://www.example.com/articles/news/43

http://www.electrictoolbox.com/mysql-find-replace-text/

150voto

onteria_ Punkte 64688

Ja, MySQL hat eine REPLACE()-Funktion:

mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
    -> 'WwWwWw.mysql.com'

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

Beachten Sie, dass es einfacher ist, wenn Sie das als Alias verwenden, wenn Sie SELECT

SELECT REPLACE(string_column, 'search', 'replace') as url....

25voto

Jay Punkte 12869

El ersetzen. Funktion sollte für Sie funktionieren.

REPLACE(str,from_str,to_str)

Gibt die Zeichenkette str zurück, wobei alle Vorkommen der Zeichenkette from_str durch die Zeichenkette to_str ersetzt werden. REPLACE() führt bei der Suche nach from_str eine Groß- und Kleinschreibung durch.

17voto

Deepak Kumbhar Punkte 435

Sie können einfach die Funktion replace() verwenden.

Beispiel:

mit where-Klausel-

update tableName set columnName=REPLACE(columnName,'from','to') where condition;

ohne Where-Klausel -

update tableName set columnName=REPLACE(columnName,'from','to');

Hinweis: Die obige Abfrage, wenn für Datensätze direkt in der Tabelle zu aktualisieren, wenn Sie auf Abfrage auswählen möchten und die Daten sollten nicht in der Tabelle betroffen sein, dann können die folgende Abfrage verwenden

select REPLACE(columnName,'from','to') as updateRecord;

7voto

RafaSashi Punkte 15272

Ergänzend zur Antwort von gmaggio wenn Sie dynamisch arbeiten müssen REPLACE y UPDATE nach einer anderen Spalte können Sie zum Beispiel tun:

UPDATE your_table t1
INNER JOIN other_table t2
ON t1.field_id = t2.field_id
SET t1.your_field = IF(LOCATE('articles/updates/', t1.your_field) > 0, 
REPLACE(t1.your_field, 'articles/updates/', t2.new_folder), t1.your_field) 
WHERE...

In meinem Beispiel wird die Zeichenkette articles/news/ wird gespeichert in other_table t2 und es ist nicht nötig, die LIKE dans le WHERE Klausel.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X