質問
こんにちは、hibernateとMysqlを使用しています。 「アクティブ」というブール属性を持つクラスがあります。
生成されたデータベーステーブルにはBITデータ型があります。ここまでは順調ですね。 この値を照会したいのですが、その方法がわかりません。 試しました
SELECT * from table where active = 1
機能しない、次のいずれでもない
SELECT * from table where active = true
リファレンスマニュアルにもStackoveflowにも何も見つかりませんでした。
何かヒントはありますか?
事前に感謝します!
解決
SELECT * FROM table WHERE active = (1)
他のヒント
ビット値を指定するには、b'value '表記を使用できます。
比較のために整数にキャストしようとしましたか
SELECT * from table where cast(active as unsigned) = 1
ほとんどの場合MS SQLを使用しているので、テストできないのでこれが機能しない場合はご容赦ください。
実際、MySQLには組み込みのビットリテラルがあります:
select*from table where active = 0b1
まあ、比較と更新の両方で、0と1が私のために働きます:
ここに、タイプがbit(1)のフィールドが1行あります。このフィールドは現在falseです:
mysql> select isfeatured from nodes where isfeatured = 1;
Empty set (0.00 sec)
mysql> select isfeatured from nodes where isfeatured = 0;
+------------+
| isfeatured |
+------------+
| |
+------------+
1 row in set (0.00 sec)
isfeaturedで0から1に変更して更新します。これはbit(1)型です...
mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
1行が変更されました...もう一度試してください:
mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
期待どおりに変更された行はありません。
以前と同じ選択クエリ:
mysql> select isfeatured from nodes where isfeatured = 1;
+------------+
| isfeatured |
+------------+
| |
+------------+
1 row in set (0.00 sec)
mysql> select isfeatured from nodes where isfeatured = 0;
Empty set (0.01 sec)
ご覧ください、動作します。
使用しているもの:
mysql Ver 14.14 Distrib 5.5.31、readline 6.2を使用したdebian-linux-gnu(x86_64)用
and
/ usr / sbin / mysqld Ver 5.5.31-0 + wheezy1 for x86_64上のdebian-linux-gnu((Debian))
所属していません StackOverflow