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!

War es hilfreich?

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))

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top