2016-03-21 2 views
-1

Ich habe eine Varchar-Spalte namens "welcomeemailabtachment" wo ich den Pfad zu einer Datei speichern, die als Anhang für eine E-Mail verwendet wird. Ich muss die Werte auf einen anderen Pfad aktualisieren.Aktualisieren/Neuanordnen von Teil des Varchar-Wert in MYSQL

Change this: /files/1089/attachment.pdf 
To this: /companies/1089/files/attachment.pdf 

Wo attachment.pdf beliebiger Dateiname sein kann und kann eine beliebige Zahl sein. Diese Nummer ist eigentlich die Firmen-ID.

Ich weiß, kann ich teilweise verwenden ersetzen, um dieses Problem zu lösen, wie so:

UPDATE companies SET welcomeemailattachment = REPLACE(welcomeemailattachment, '/files/', '/companies/') WHERE field LIKE '/files/%'; 

aber wie füge ich den „/files/“ Teil zwischen dem CompanyID und der Namen der Datei?

+0

Verwenden 'SUBSTRING_INDEX' (siehe http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index) –

+0

Warum war meine Frage unten gewählt? – Vincent

Antwort

0

sqlfiddle

UPDATE companies SET welcomeemailattachment = CONCAT('/companies/', 
SUBSTRING_INDEX(SUBSTRING_INDEX(welcomeemailattachment,'/',3),'/',-1), 
'/files/', 
SUBSTRING_INDEX(welcomeemailattachment,'/',-1))