2011-01-18 16 views
4

Простой вопрос для MySQL-pro. У меня есть таблица, в которой есть поле с именем файла (просто имя файла, без дополнительного текста). Мне нужно изменить все расширение файла с ".png" на ".jpg", я знаю, что есть способ сделать это с помощью простого запроса и без скриптов на языке программирования, таком как PHP или Java.MySQL изменить расширение файла в текстовом столбце

Только в случае, сбросив "показать создать таблицу" вывод:

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

ответ

11

Используйте REPLACE function в операторе UPDATE:

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') 

Если нет матча, замена не будет.

+0

Надеемся, что все имена файлов правильно сформированы, а не «picture.png.jpg» и тому подобное. –

3

Использование REPLACE. В качестве примера:

update photos 
    set normal_file_name = replace(normal_file_name, '.png', '.jpg'); 
Смежные вопросы