2017-06-13 20 views
-1

我正在給一個示例演示和我得到的結果。如何從MySQL數據庫中找到ENUM值?

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

狀態字段的類型是ENUM。

當我試圖讓ENUM一樣的結果:

select name, status+0 from demo;

我2和3得到的名稱和狀態,而不是1。我也曾嘗試IN(0,2)status=2查詢。

+0

見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be -a-very-simple-sql-query – Strawberry

回答

0

Enum價值的可利用'單引號等比較:

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

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

非常感謝你的回答。它正在工作 –

1
可以用戶 Query

這樣的:

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

你的名字在那裏status is 0

,如果你想獲得其中的狀態爲1和2的數據,你只需要添加WHERE條件,如:

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

非常感謝你的回答。它正在工作。 –

0

其原因是,枚舉有其tinyint的內部數據類型(從0開始)以及何時在where子句中使用狀態。 status = 0使where子句返回false。

看這樣的情景:

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

這使那裏的條件並不滿足,不返回結果。

在狀態= 1或2時,返回滿足的和相應的行。
解決方案:

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