2010-08-02 216 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