如何在MySql中选择枚举类型的值数?

如何在MySql中选择枚举类型的值数?,mysql,enums,Mysql,Enums,我需要从下表中选择一行,但问题是,$row['city']中的值是该值的文本表示,我需要它的编号(Toronto=2)。(与插入时相同,我们使用值编号而不是文本) 请求表结构: req_id INT uname VARCHAR(30) city ENUM('New York', 'Toronto', 'Las Vegas') 您只需从以下位置将您的城市强制设置为数字上下文: 如果在数值上下文中检索ENUM值,将返回列值的索引。例如,您可以从ENUM列中检索数值,如下所示: mysql&g

我需要从下表中选择一行,但问题是,
$row['city']
中的值是该值的文本表示,我需要它的编号(Toronto=2)。(与插入时相同,我们使用值编号而不是文本)

请求表结构:

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

您只需从以下位置将您的
城市
强制设置为数字上下文:

如果在数值上下文中检索
ENUM
值,将返回列值的索引。例如,您可以从
ENUM
列中检索数值,如下所示:

mysql> SELECT enum_col+0 FROM tbl_name;
所以你想要这样的东西:

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

顺便说一句,您可以使用字符串或整数表示插入
枚举。

您可以使用
CAST
函数。没有提到这个特定的用例,但是它按照预期工作。我更喜欢它,因为它看起来优雅而清晰:

SELECT CAST(city AS UNSIGNED) FROM your_table;

非常感谢,它为我节省了很多时间。+0是一个很好的简单的快捷方式转换调整(…作为未签名),因为它似乎。很酷,谢谢!请注意,在MySQL服务器5.5.38(Ubuntu 12.04)中,如果表是直接映射枚举列的视图,则此解决方案不起作用。enum_col+0解决方案也适用于5.5.38。