2011-09-10 25 views
9

我需要從下表中選擇一行,但問題是價值在$row['city']是價值的文本表示,我需要它的數字(多倫多= 2)。 (同當我們INSERT INTO,我們用價值數字,而不是文本)如何在MySql中選擇ENUM類型的數值?

請求表結構:

req_id INT 
uname VARCHAR(30) 
city ENUM('New York', 'Toronto', 'Las Vegas') 

回答

12

你只需要你的city強制爲數字背景下,從fine manual

如果您在數字上下文中檢索ENUM值,則返回列值的索引。例如,你可以從一個ENUM列數值是這樣的:

mysql> SELECT enum_col+0 FROM tbl_name; 

所以,你想這樣的事情:

select req_id, city+0 
from your_table 
where city = 'Toronto' 

順便說一句,你就可以利用字符串插入enum或整數表示。

+0

非常感謝你,它爲我節省了很多時間。 –

+0

+0是一個很好的簡單的調整,以捷徑CAST(... AS UNSIGNED),因爲它似乎。很酷,謝謝! – Steini

2

您可以使用CAST函數。 documentation未提及此特定用例,但它按預期工作。我更喜歡它,因爲它看起來優雅和清晰:

SELECT CAST(city AS UNSIGNED) FROM your_table; 
+0

請注意,儘管在MySQL服務器5.5.38(Ubuntu 12.04)中,如果表是直接映射ENUM列的視圖,則此解決方案不起作用。 enum_col + 0解決方案也適用於5.5.38。 – ddirect