2016-03-21 78 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))