Mysql 用SQL替换字符串字段中文件路径的一部分

Mysql 用SQL替换字符串字段中文件路径的一部分,mysql,sql,Mysql,Sql,您好,我有一个表Gallery,其中有一个字段url\u immagine,我想使用一个查询来替换upload/Gallery/311/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg中的所有类似于upload/Gallery/311/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg 不幸的是,作为字符串的一部分,ID(331)并不总是相同的,因此无法理解如何。。。 我试过这样的正则表达式: UPDATE gallery SET ur

您好,我有一个表
Gallery
,其中有一个字段
url\u immagine
,我想使用一个查询来替换
upload/Gallery/311/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg
中的所有类似于
upload/Gallery/311/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg

不幸的是,作为字符串的一部分,ID(331)并不总是相同的,因此无法理解如何。。。 我试过这样的正则表达式:

 UPDATE gallery SET url_immagine = replace(url_immagine, 'upload/gallery/.*/', '/')

但它似乎不起作用。

将CONCAT和SUBSTRING\u索引结合起来,因为您可以使用“/”的最后一个索引

尝试确认它正在执行您想要的操作:

SELECT CONCAT('/',SUBSTRING_INDEX(url_immagine, '/', -1))
FROM gallery

您可以在mysql手册中看到replace函数和所有其他字符串函数的文档:

它没有提到replace处理正则表达式,所以我们假设它不处理正则表达式,它是逐字工作的,并使用your
*
查找char
*


你还可以看到,似乎没有一个函数可以为你完成全部工作。所以你必须以某种方式把它们结合起来。Mateo的想法可能是正确的方向。

您要替换哪个值?@McAdam331我尝试了
更新库集url\u-immagine=replace(url\u-immagine,'upload/gallery/*/','/'))
所以您要替换整个字符串?为什么不直接设置url_immagine='/'?SQL可以用于大规模破坏,您不需要ID,单个查询可以更改整个表。因为整行是:
upload/gallery/311/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg
,我只想保留
/ge_c1966615153f6b2fcf5d84c1e389eea8.jpg
您好,我使用了CONCAT,是的,结果是我希望收到,很遗憾,如果我使用你给我的字符串出错<代码>#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第2行“选择CONCAT(“/”,SUBSTRING_INDEX(url_immagine,“/”,-1))”附近使用的正确语法
SELECT CONCAT('/',SUBSTRING_INDEX(url_immagine, '/', -1))
FROM gallery