Вы должны использовать двоичную запись, чтобы обновить или вставить свои значения:
UPDATE users SET active = b'101' WHERE 1
Я протестировал и не могу воспроизвести вашу проблему с битом (10), ставшим битом (31).
Я полагаю, что phpmyadmin не отображает правильно ваши неправильно введенные значения
Я бы посоветовал вам вывести свои значения в виде BIN(active)
и CAST(active AS UNSIGNED)
, чтобы увидеть, что является реальным двоичным значением, сохраненным
Пример
CREATE table test (id INT, tip VARCHAR(100), active bit(10) NULL DEFAULT NULL );
INSERT into test (id,tip) VALUES (1,'testing NULL default');
INSERT into test VALUES (2, 'testing 0101 without "b" notation', 0101);
INSERT into test VALUES (3, 'testing 0101 with b notation ', b'0101');
INSERT into test VALUES (4, 'testing 111 ', 111);
INSERT into test VALUES (5, 'testing b1111111111 ', b'1111111111');
SELECT id, tip, BIN(active) as binvalue, CAST(active AS UNSIGNED) intvalue FROM test;
| id | tip | binvalue | intvalue |
|----|-----------------------------------|------------|----------|
| 1 | testing NULL default | (null) | (null) |
| 2 | testing 0101 without "b" notation | 1100101 | 101 |
| 3 | testing 0101 with b notation | 101 | 5 |
| 4 | testing 111 | 1101111 | 111 |
| 5 | testing b1111111111 | 1111111111 | 1023 |
Игровая площадка Fiddle