Mysql: Wie eine Spalte, deren Typ zur Abfrage ist Bit?
Frage
Hallo ich Hibernate und Mysql verwenden. Ich habe eine Klasse mit einem boolean Attribute namens ‚aktiv‘.
Die generierte Datenbanktabelle hat den BIT-Datentyp. So weit, ist es gut. Ich mag diesen Wert abfragen, aber ich weiß nicht, wie es zu tun. Ich habe versucht,
SELECT * from table where active = 1
nicht funktioniert, weder die folgende
SELECT * from table where active = true
Ich habe nichts weder im Referenzhandbuch finden noch bei Stackoveflow.
Jeder Hinweis?
Vielen Dank im Voraus!
Lösung
SELECT * FROM table WHERE active = (1)
Andere Tipps
Nach dieser Seite , BIT ist ein Synonym für TINYINT (1) für die Versionen vor 5.0.3 .
Haben Sie versucht, diese?
SELECT * from table where active = (1)
SELECT * from table where active = 'true'
SELECT * from table where active = b'1'
Dieser Blogeintrag schlägt vermeiden, dass der BIT-Datentyp zusammen.
Um Bit-Werte, b'value‘Notation angeben kann verwendet werden.
Haben Sie versucht, es zu einer ganzen Zahl zum Vergleich Gießen
SELECT * from table where cast(active as unsigned) = 1
Ich benutze MS SQL die meiste Zeit so vergib mir, wenn dies so nicht funktioniert ich es nicht testen können.
Eigentlich MySQL verfügt über eine integrierte in Bit-Literale:
select*from table where active = 0b1
Nun, für beide Vergleiche und Updates, 0 und 1 für mich arbeiten:
Hier ist ein Feld vom Typ Bit (1), eine Zeile, wird das Feld derzeit falsch:
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)
Update 0 auf 1 in isfeatured ändern, welche Art 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
Eine Zeile geändert ... Versuchen Sie es erneut:
mysql> update nodes set isfeatured=1 where isfeatured = 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
Keine Zeilen geändert, wie erwartet.
Die gleichen SELECT-Abfragen nach wie vor:
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)
Sehen Sie, es funktioniert.
Ich bin mit:
mysql Ver 14.14 Distrib 5.5.31, für debian-linux-gnu (x86_64) mit Readline- 6.2
und
/ usr / sbin / mysqld Ver 5.5.31-0 + wheezy1 für debian-linux-gnu auf x86_64 ((Debian))