Ответ 1
SELECT * FROM table WHERE active = (1)
Сгенерированная таблица базы данных имеет тип данных BIT. Все идет нормально. Я хочу запросить это значение, но я не знаю, как это сделать. Я пробовал
SELECT * from table where active = 1
не работает, ни следующий
SELECT * from table where active = true
Я ничего не нашел ни в справочном руководстве, ни в Stackoveflow.
Любые подсказки?
Спасибо заранее!
SELECT * FROM table WHERE active = (1)
Согласно эта страница, BIT является синонимом TINYINT (1) для версий до 5.0.3.
Вы пробовали это?
SELECT * from table where active = (1)
SELECT * from table where active = 'true'
SELECT * from table where active = b'1'
Эта запись позволяет избегать типа данных BIT вообще.
Чтобы указать значения бит, может использоваться нотация b'value.
Попробовали ли вы применить его к Integer для сравнения.
SELECT * from table where cast(active as unsigned) = 1
Я использую MS SQL большую часть времени, поэтому простите меня, если это не работает, поскольку я не могу его протестировать.
На самом деле MySQL имеет встроенные битовые литералы:
select*from table where active = 0b1
Хорошо, для обоих сравнений и обновлений, 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))