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”。
我不知道怎么写这样的剧本...
答案 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()
。