在MYSQL中更新/重新安排varchar值的一部分

时间:2016-03-21 18:21:33

标签: mysql replace

我有一个名为" welcomeemailattachment "的varchar列。我将路径存储到用作电子邮件附件的文件。我需要将值更新为不同的路径。

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

attachment.pdf 可以是任何文件名, 1089 可以是任意数字。这个号码实际上是公司ID。

我意识到我可以使用replace来部分解决这个问题:

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

但如何插入" / files / "介于companyid和文件名之间?

1 个答案:

答案 0 :(得分:0)

sqlfiddle

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