ejemplo mysql select bit

ejemplo - insert bit mysql



Mysql: ¿Cómo consultar una columna cuyo tipo es un bit? (6)

Hola, estoy usando hibernate y Mysql. Tengo una clase con un atributo booleano llamado ''activo''.

La tabla de la base de datos generada tiene el tipo de datos BIT. Hasta aquí todo bien. Quiero consultar este valor, pero no sé cómo hacerlo. He intentado

SELECT * from table where active = 1

no funciona, ni el siguiente

SELECT * from table where active = true

No encontré nada ni en el manual de referencia ni en Stackoveflow.

¿Alguna pista?

¡Gracias por adelantado!


¿Has intentado convertirlo en un Entero para comparar

SELECT * from table where cast(active as unsigned) = 1

Uso MS SQL la mayor parte del tiempo, así que perdónenme si esto no funciona ya que no puedo probarlo.


Bueno, para las comparaciones y las actualizaciones, 0 y 1 me funcionan:

Aquí hay un campo de tipo bit (1), una fila, el campo es actualmente falso:

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)

La actualización cambia de 0 a 1 en isfeatured, que es tipo 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

Una fila cambió ... Inténtalo de nuevo:

mysql> update nodes set isfeatured=1 where isfeatured = 0; Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0

No se cambiaron las filas como se esperaba.

Misma selección de consultas como antes:

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)

Mira, funciona.

Estoy usando:

mysql Ver 14.14 Distrib 5.5.31, para debian-linux-gnu (x86_64) usando readline 6.2

y

/ usr / sbin / mysqld Ver 5.5.31-0 + wheezy1 para debian-linux-gnu en x86_64 ((Debian))


En realidad, MySQL tiene literales de bits incorporados:

select*from table where active = 0b1


Para especificar valores de bit, se puede usar la notación b''value ''.


Según esta página , BIT es un sinónimo de TINYINT (1) para las versiones anteriores a la 5.0.3 .

¿Has probado esto?

SELECT * from table where active = (1) SELECT * from table where active = ''true'' SELECT * from table where active = b''1''

Esta entrada de blog sugiere evitar el tipo de datos BIT por completo.


SELECT * FROM table WHERE active = (1)