【问题标题】: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