2011-01-18 13 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

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

一致するものがない場合は、交換が発生しません。

+0

「picture.png.jpg」などではなく、すべてのファイル名が適切に形成されていることを望みます。 –

3

REPLACEを使用してください。例として:

update photos 
    set normal_file_name = replace(normal_file_name, '.png', '.jpg'); 
関連する問題