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

Ara*_*oor 12 mysql enums

我需要从下表中选择一行,但问题是值$row['city']是文本表示的值,我需要它的数字(多伦多= 2).(与INSERT INTO时相同,我们使用值编号而不是文本)

请求表结构:

req_id INT
uname  VARCHAR(30)
city   ENUM('New York', 'Toronto', 'Las Vegas')
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 19

您只需city要从精细手册强制进入数字上下文:

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

mysql> SELECT enum_col+0 FROM tbl_name;
Run Code Online (Sandbox Code Playgroud)

所以你想要这样的事情:

select req_id, city+0
from your_table
where city = 'Toronto'
Run Code Online (Sandbox Code Playgroud)

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


小智 7

您可以使用该CAST功能。该文档没有提及这个特定的用例,但它按预期工作。我更喜欢它,因为它看起来优雅而清晰:

SELECT CAST(city AS UNSIGNED) FROM your_table;
Run Code Online (Sandbox Code Playgroud)