my_table包含enabled定义为的字段:enabled BIT NOT NULL DEFAULT 0.
此表有多行enabled = b'0',多行enabled = b'1'.
但是,这两个:
SELECT * from my_table WHERE enabled = b'0';
Run Code Online (Sandbox Code Playgroud)
还有这个:
SELECT * from my_table WHERE enabled = b'1';
Run Code Online (Sandbox Code Playgroud)
在enabled列中显示空白:
+----+---------+
| id | enabled |
+----+---------+
| 1 | |
| 2 | |
+----+---------+
Run Code Online (Sandbox Code Playgroud)
这是为什么?我怎么能看到该enabled领域的价值?
$ mysql --version
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1
Run Code Online (Sandbox Code Playgroud)
pet*_*erm 70
您无法在终端中看到它的原因是因为位值是不可打印的字符.
让我们插入以下值:
INSERT INTO `my_table` (`ID`, `enabled`)
VALUES (1,b'1'),(2,b'0');
Run Code Online (Sandbox Code Playgroud)
然后选择它们归档:
mysql> SELECT * FROM my_table INTO OUTFILE '/tmp/my_table.txt' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Run Code Online (Sandbox Code Playgroud)
首先让我们/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
Run Code Online (Sandbox Code Playgroud)
这将产生以下输出:
+----+---------+
| id | enabled |
+----+---------+
| 1 | 1 |
| 2 | 0 |
+----+---------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
علی*_*رضا 21
最简单的方法是ORD功能:
SELECT ORD(`enabled`) AS `enabled` FROM `my_table`
Run Code Online (Sandbox Code Playgroud)
小智 5
位值作为二进制值返回。要以可打印的形式显示它们,请添加 0 或使用 BIN() 等转换函数。
https://dev.mysql.com/doc/refman/5.7/en/bit-field-literals.html
| 归档时间: |
|
| 查看次数: |
30359 次 |
| 最近记录: |