2017-06-13 7 views
-1

私はサンプルデモと私が結果として得ているものを与えています。MySQLデータベースからENUM値を見つけるには?

ステータスフィールドのタイプはENUMです。私は次のようにENUMの結果を取得しようとしているときに

select name, status+0 from demo;

私はまたIN(0,2)status=2クエリを試してみました。1. 2と3の名前とステータスを取得しておりません。

+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 

これは条件満たされていない作りと何の結果を返しません。

status = 1または2の場合、満足して対応する行が返されます。
ソリューション:

SELECT `name`, `status` FROM `demo` WHERE `demo`.`status` > -1 
関連する問題