Невозможно увидеть значение поля BIT MySQL при использовании SELECT
my_table
содержит поле enabled
, которое определяется как: enabled BIT NOT NULL DEFAULT 0
.
В этой таблице несколько строк с enabled = b'0'
и несколько строк с enabled = b'1'
.
Однако оба эти:
SELECT * from my_table WHERE enabled = b'0';
и это:
SELECT * from my_table WHERE enabled = b'1';
показать пробел в столбце enabled
:
+----+---------+
| id | enabled |
+----+---------+
| 1 | |
| 2 | |
+----+---------+
Почему? Как я могу увидеть значение поля enabled
?
$ mysql --version
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1
Ответы
Ответ 1
Причина, по которой вы не можете видеть ее в терминале, заключается в том, что битовые значения не являются печатными символами.
Позволяет вставить следующие значения:
INSERT INTO `my_table` (`ID`, `enabled`)
VALUES (1,b'1'),(2,b'0');
Затем выберите их в файл:
mysql> SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Сначала давайте посмотрим наш /tmp/my_table.txt
файл как обычный текст:
"1", "
" 2 "," "
а затем в шестнадцатеричном представлении:
22 31 22 2C 22 01 22 0A 22 32 22 2C 22 00 22 0A
Чтобы увидеть эти значения, вы можете просто CAST
их в SELECT
:
SELECT id, CAST(enabled AS UNSIGNED) AS enabled FROM my_table
И это даст следующий результат:
+----+---------+
| id | enabled |
+----+---------+
| 1 | 1 |
| 2 | 0 |
+----+---------+
2 rows in set (0.00 sec)
Ответ 2
Самый простой способ - это функция ORD
:
SELECT ORD(`enabled`) AS `enabled` FROM `my_table`
Ответ 3
Другой способ, которым вы можете это сделать, -
SELECT enabled+0 from my_table
Ответ 4
Битовые значения возвращаются как двоичные значения. Чтобы отобразить их в печатной форме, добавьте 0 или используйте функцию преобразования, такую как BIN().
https://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html