【问题标题】:How to find a ENUM value from MySQL database?如何从 MySQL 数据库中查找 ENUM 值?
【发布时间】:2017-06-13 06:48:34
【问题描述】:

我正在提供一个示例演示以及我得到的结果。

+-------+----------
 name      status
+-------+----------
 Subha     1
 Rajeeb    2
 Rahul     3
+-------+----------

状态字段的类型是 ENUM。

当我试图获得 ENUM 的结果时:

select name, status+0 from demo;

我正在获取 2 和 3 而不是 1 的名称和状态。我还尝试了 IN(0,2)status=2 查询。

【问题讨论】:

标签: javascript mysql sql-server database enums


【解决方案1】:

Enum 的值可以使用' 单引号进行比较,例如:

SELECT `name` FROM `demo` WHERE `demo`.`status` = '1'

SELECT `name` FROM `demo` WHERE `demo`.`status` IN('11, '2')

【讨论】:

    【解决方案2】:

    您可以像这样使用Query

    SELECT `name` FROM `demo` WHERE `demo`.`status` = 1
    

    你在status is 0的地方得到名字。

    如果您想获取状态为 1 和 2 的数据,您只需添加 where 条件,例如:

    WHERE (`demo`.`status` = 1 OR  `demo`.`status` = 2)
    

    【讨论】:

      【解决方案3】:

      原因是,枚举的内部数据类型为 tinyint(以 0 开头),并且当您使用 where 子句中的状态时。 status=0 使得 where 子句返回 false。

      看看这个场景:

      SELECT `name`, `status` FROM `demo` WHERE `demo`.`status` = 0
      

      这使得 where 条件不满足并且不返回任何结果。

      在 status=1 或 2 中,返回满意的和相应的行。
      解决方案:

      SELECT `name`, `status` FROM `demo` WHERE `demo`.`status` > -1
      

      【讨论】:

        猜你喜欢
        • 2018-10-02
        • 2011-04-27
        • 2014-04-08
        • 1970-01-01
        • 1970-01-01
        • 2020-04-20
        • 2017-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多