MYSQL中varchar值的更新/重新排列部分
问题描述:
我有一个名为“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和文件名之间?
答
UPDATE companies SET welcomeemailattachment = CONCAT('/companies/',
SUBSTRING_INDEX(SUBSTRING_INDEX(welcomeemailattachment,'/',3),'/',-1),
'/files/',
SUBSTRING_INDEX(welcomeemailattachment,'/',-1))
使用'SUBSTRING_INDEX'(见http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index) –
为什么我的问题下来投票? – Vincent