[英]MySQL: Help with script needed
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 TABLE photos
ADD COLUMN type varchar(50) default 'jpg'
但是有一个问题:“照片”列包含路径-“ / foo / bar.jpg”或“ /foo/bar.png”,我想根据“照片”列的内容更新“类型”列。 因此,如果照片以“ jpg”结尾,则类型必须为“ jpg”;如果照片以“ png”结尾,则类型必须为“ png”。
我不知道如何编写这样的脚本...
您可以为此使用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)
这不是您问题的答案,但这听起来确实不是数据库引擎的工作。 我建议在添加记录时设置type
。
同样,文件扩展名不能保证图像实际上是指定类型的。 进行检查可能是个好主意-例如,在PHP中,您将使用getimagesize()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.