MySQL更新所有以相同前缀开头的字符串,但只删除以下划线开头的部分

时间:2017-10-23 22:46:30

标签: mysql sql

在mysql数据库的表value的列image中,我有很多不同的图像URL。 它们都具有相同的前缀prefix-,后跟5 different characters and numbers,例如:

prefix-SD356
prefix-RV954
prefix-UB347

不幸的是,在此之后,我总是有underscore后跟other characters, numbers and underscore,我想删除但保留第一部分。

为了更好地理解:

prefix-SD356_2_25.jpg应成为prefix-SD356.jpg

prefix-RV954_1.jpg应成为prefix-RV954.jpg

prefix-UB347_1_1.jpg应成为prefix-UB347.jpg

依旧......

我需要一个查询,我可以更新以prefix- [A-Za-z0-9]开头的所有字符串,并保留该部分并删除以_开头的其余部分

1 个答案:

答案 0 :(得分:1)

根据你的说法:

select concat(left(string, 12), '.', substring_index(string, '.', -1))

这很容易纳入更新:

update t
    set string = concat(left(string, 12), '.', substring_index(string, '.', -1))
    where string like 'prefix______%.%';