【发布时间】:2011-09-10 05:12:50
【问题描述】:
我需要从下表中选择一行,但问题是$row['city'] 中的值是该值的文本表示,我需要它的数字(Toronto = 2)。 (和我们 INSERT INTO 的时候一样,我们使用数值编号而不是文本)
请求表结构:
req_id INT
uname VARCHAR(30)
city ENUM('New York', 'Toronto', 'Las Vegas')
【问题讨论】:
我需要从下表中选择一行,但问题是$row['city'] 中的值是该值的文本表示,我需要它的数字(Toronto = 2)。 (和我们 INSERT INTO 的时候一样,我们使用数值编号而不是文本)
请求表结构:
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;
【讨论】: