我正在尝试使用SQL更新所有行的特定部分。下面是一个例子:
**table ** 788745.ext 998520.ext 447789.ext 174664.ext 788012.ext
我想用“.jpg”替换“.ext”部分。
答案 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';