Cdr*_*ndr 37 mysql sqldatatypes
从我的create table脚本中,我将hasMultipleColors字段定义为BIT:
hasMultipleColors BIT NOT NULL,
Run Code Online (Sandbox Code Playgroud)
运行INSERT时,不会为此或其他BIT字段抛出警告,但选择行会显示所有BIT值都为空.
手动尝试从命令行更新这些记录会产生奇怪的效果 - 显示记录匹配并更改(如果适用),但仍然始终显示为空白.
服务器版本:5.5.24-0ubuntu0.12.04.1(Ubuntu)
mysql> update pumps set hasMultipleColors = 1 where id = 1;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
mysql> update pumps set hasMultipleColors = b'0' where id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select hasMultipleColors from pumps where id = 1;
+-------------------+
| hasMultipleColors |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
RTB*_*RTB 54
您需要将位字段转换为整数.
mysql> select hasMultipleColors+0 from pumps where id = 1;
Run Code Online (Sandbox Code Playgroud)
这是因为一个错误,请参阅:http://bugs.mysql.com/bug.php?id = 43670.状态说:不会修复.
您可以将BIT字段转换为无符号.
SELECT CAST(hasMultipleColors AS UNSIGNED) AS hasMultipleColors
FROM pumps
WHERE id = 1
Run Code Online (Sandbox Code Playgroud)
它将根据值返回1或0 hasMultipleColors.
您需要执行bit 1不可打印的转换.
SELECT hasMultipleColors+0 from pumps where id = 1;
在这里查看更多:http: //dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html