MySQL:需要帮助处理脚本

时间:2010-08-02 08:30:40

标签: sql mysql

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

所以,我有桌子'照片'。 现在我想要更改此表并添加列'type'。

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

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

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

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

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