string replace in MySQL

Thomasio

Erfahrenes Mitglied
Ich habe eine Tabelle mit ca. 50000 Einträgen.
In einer Spalte dieser Tabelle steht jeweils Text mit Schrägstrichen.

/Text/Text/Text

Ich muss jetzt durch die gesamte Tabelle und alle Vorkommen von

/Some/Text/Text

ersetzen durch

/Something/Text/Text

Wobei "Text" jedesmal anders sein kann, aber nicht muss.

Wenns einfach PHP wäre, etwa so:

Code:
if(substr($MyString,0,6) == "/Some/")
{
$Reststring = substr(MyString,6);
$MyString = "/Something/".$Reststring;
}

Die Frage ist, geht das direkt mit einem query in MySQL, oder muss ich das in einer Schleife zeilenweise nach PHP einlesen, ändern und zurück schreiben?
 
Willst du "Some" dauerhaft durch "Something" ersetzen?

Dann führe einfach eine Updateanweisung aus (ungetestet):

SQL:
UPDATE tabellenname SET feldname = CONCAT('/Something/', MID(feldname, 7, LENGTH(feldname))) WHERE feldname LIKE '/Some/%'
 
Zuletzt bearbeitet von einem Moderator:
Danke für schnelle Antwort, Lösung ist fast ok, nur ein Problem.
Ich will das tatsächlich dauerhaft ersetzen, nur kann feldname auch so aussehen

/Some/Text/Some/Text

und in dem Fall darf nur das erste Some ersetzt werden, also

/Something/Text/Some/Text
 
Hast du seine Abfrage mal getestet? Die ersetzt nur die ersten sechs Zeichen durch "/Something/". Also würde auch nur das erste "/Some/" ersetzt werden.
 
Wenn du SUBSTRING() anstelle von MID() wählst, kannst du dir die Längenangabe auch sparen.
SQL:
 MID(feldname, 7, LENGTH(feldname))
--entspricht
 SUBSTRING(feldname, 7)
 
Zuletzt bearbeitet von einem Moderator:
Zurück