【问题标题】:How to select value number of ENUM types in MySql?如何在 MySql 中选择 ENUM 类型的值数?
【发布时间】: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')

【问题讨论】:

    标签: mysql enums


    【解决方案1】:

    您只需要将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 似乎是对快捷方式 CAST(... AS UNSIGNED) 的一个很好且简单的调整。很酷,谢谢!
    【解决方案2】:

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

    SELECT CAST(city AS UNSIGNED) FROM your_table;
    

    【讨论】:

    • 请注意,尽管在 MySQL 服务器 5.5.38 (Ubuntu 12.04) 中,如果表是直接映射 ENUM 列的视图,则此解决方案不起作用。 enum_col+0 解决方案也适用于 5.5.38。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多