2010-08-02 186 views
1
CREATE TABLE `photos` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT, 
    `photo` varchar(255) NOT NULL, 
    `hotel_id` bigint(20) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=23061 DEFAULT CHARSET=utf8 

所以,我有桌子上的照片。 现在我想要ALTER这个表并添加'type'列。MySQL:需要脚本帮助

ALTER TABLE photos 
ADD COLUMN type varchar(50) default 'jpg' 

但有一个问题: 柱“照片”中包含的路径 - “/foo/bar.jpg”或“/foo/bar.png”,我想根据更新“类型”栏“照片'栏目内容。因此,如果照片以'jpg'结尾,则类型必须为'jpg',如果以'png'结尾,则类型必须为'png'。

我不知道怎么写这样的剧本......

回答

4

你可以使用一个case声明:

update photos 
set  type = case 
        when photo like '%.jpg' then 'jpg' 
        when photo like '%.png' then 'png' 
        else null 
       end 

或者,如果类型总是最后3个字符:

update photos 
set  type = right(photo, 3) 
1

不是你的问题的答案,但这听起来不像是数据库引擎的工作。当记录被添加时,我会建议设置type

此外,文件扩展名不能保证图像实际上是指定的类型。这可能是一个好主意,检查这一点 - 例如,在PHP中,您将使用getimagesize()

+1

你是绝对正确的,然而在这种情况下,他看起来像他只想做一次更新数据库中的数据。 – 2010-08-02 08:44:34