MySQL在文本列中更改文件扩展名

时间:2011-01-18 22:14:02

标签: mysql sql sql-update

MySQL-pro的一个简单问题。我有一个表中包含文件名的字段(只是文件名,没有额外的文本)。我需要将所有文件扩展名从“.png”更改为“.jpg”,我知道有一种方法可以使用PHP或Java等编程语言进行查询和编写脚本。

以防万一,删除“show create table”输出:

CREATE TABLE `photos` (
  `id` bigint(20) NOT NULL,
  `owner_id` int(11) DEFAULT NULL,
  `photo_name` varchar(255) DEFAULT NULL,
  `comment` text,
  `normal_file_name` varchar(255) DEFAULT NULL,
  `thumb_file_name` varchar(255) DEFAULT NULL,
  `full_file_name` varchar(255) DEFAULT NULL,
  `photo_order` int(11) DEFAULT NULL,
  `gallery_file_name` varchar(255) DEFAULT NULL,
  `photo_type` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_photos_OWNER_ID` (`owner_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |

normal_file_name,thumb_file_name,gallery_file_name和full_file_name是包含文件路径的字段。

提前感谢您的帮助!

// Juriy

2 个答案:

答案 0 :(得分:13)

在UPDATE语句中使用REPLACE function

UPDATE PHOTOS
   SET normal_file_name = REPLACE(normal_file_name, '.png', '.jpg'),
       thumb_file_name = REPLACE(thumb_file_name, '.png', '.jpg'),
       gallery_file_name = REPLACE(gallery_file_name, '.png', '.jpg'),
       full_file_name = REPLACE(full_file_name, '.png', '.jpg')

如果没有匹配,则不会进行替换。

答案 1 :(得分:3)

使用REPLACE。举个例子:

update photos
    set normal_file_name = replace(normal_file_name, '.png', '.jpg');