我需要從下表中選擇一行,但問題是價值在$row['city']
是價值的文本表示,我需要它的數字(多倫多= 2)。 (同當我們INSERT INTO,我們用價值數字,而不是文本)如何在MySql中選擇ENUM類型的數值?
請求表結構:
req_id INT
uname VARCHAR(30)
city ENUM('New York', 'Toronto', 'Las Vegas')
我需要從下表中選擇一行,但問題是價值在$row['city']
是價值的文本表示,我需要它的數字(多倫多= 2)。 (同當我們INSERT INTO,我們用價值數字,而不是文本)如何在MySql中選擇ENUM類型的數值?
請求表結構:
req_id INT
uname VARCHAR(30)
city ENUM('New York', 'Toronto', 'Las Vegas')
你只需要你的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
或整數表示。
您可以使用CAST
函數。 documentation未提及此特定用例,但它按預期工作。我更喜歡它,因爲它看起來優雅和清晰:
SELECT CAST(city AS UNSIGNED) FROM your_table;
請注意,儘管在MySQL服務器5.5.38(Ubuntu 12.04)中,如果表是直接映射ENUM列的視圖,則此解決方案不起作用。 enum_col + 0解決方案也適用於5.5.38。 – ddirect
非常感謝你,它爲我節省了很多時間。 –
+0是一個很好的簡單的調整,以捷徑CAST(... AS UNSIGNED),因爲它似乎。很酷,謝謝! – Steini