2016-03-21 48 views
-1

我有一個名爲「welcomeemailattachment」的varchar列,其中存儲了用作電子郵件附件的文件的路徑。我需要將值更新爲不同的路徑。MYSQL中varchar值的更新/重新排列部分

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

attachment.pdf可以是任意文件名和可以是任何數字。這個號碼實際上是公司ID。

我知道我可以使用替代部分地解決這個問題,像這樣:

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

但如何將「/文件/」部分中companyid和文件名之間?

+0

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

+0

爲什麼我的問題下來投票? – Vincent

回答

0

sqlfiddle

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