Подтвердить что ты не робот

Mysql: как запросить столбца, тип которого бит?

Привет, Я использую hibernate и Mysql. У меня есть класс с булевым атрибутом, называемым "активным".

Сгенерированная таблица базы данных имеет тип данных BIT. Все идет нормально. Я хочу запросить это значение, но я не знаю, как это сделать. Я пробовал

 SELECT * from table where active = 1

не работает, ни следующий

 SELECT * from table where active = true

Я ничего не нашел ни в справочном руководстве, ни в Stackoveflow.

Любые подсказки?

Спасибо заранее!

4b9b3361

Ответ 1

SELECT * FROM table WHERE active = (1)

Ответ 3

Чтобы указать значения бит, может использоваться нотация b'value.

Ответ 4

Попробовали ли вы применить его к Integer для сравнения.

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

Я использую MS SQL большую часть времени, поэтому простите меня, если это не работает, поскольку я не могу его протестировать.

Ответ 5

На самом деле MySQL имеет встроенные битовые литералы:

select*from table where active = 0b1

Ответ 6

Хорошо, для обоих сравнений и обновлений, 0 и 1 работают для меня:

Здесь поле типа бит (1), одна строка, поле в настоящее время ложно:

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)

Обновление изменений с 0 по 1 в isfeatured, которое является битом типа (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

Одна строка изменилась... Повторите попытку:

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 Распределите 5.5.31, для debian-linux-gnu (x86_64), используя readline 6.2

и

/usr/sbin/mysqld Ver 5.5.31-0 + wheezy1 для debian-linux-gnu на x86_64 ((Debian))