更新所有行的特定部分

时间:2018-06-01 18:45:12

标签: mysql sql

我正在尝试使用SQL更新所有行的特定部分。下面是一个例子:

**table **

788745.ext
998520.ext
447789.ext
174664.ext
788012.ext

我想用“.jpg”替换“.ext”部分。

2 个答案:

答案 0 :(得分:4)

在MySQL中,你可以这样做:

update names
    set name = concat(substring_index(name, '.', 1), '.jpg')
    where name like '%.ext';

这假设名称中只有一个.

如果您知道 .ext未出现在名称中的任何其他位置,则可以使用replace()

update names
    set name = replace(name, '.ext', '.jpg')
    where name like '%.ext';

或者您可以使用insert()功能替换最后三个字符:

update names
    set name = insert(name, length(name) - 2, 3, 'jpg')
    where name like '%.ext';

答案 1 :(得分:1)

假设扩展名ext仅出现在每个字符串的末尾,那么简单地替换最后三个字符会更有效:

UPDATE names
SET name = CONCAT(SUBSTRING(name, 1, LENGTH(name) - 3), 'jpg')
WHERE SUBSTRING(name, -3) = 'ext';