由于MySQL似乎没有任何"布尔"数据类型,你滥用'哪种数据类型'来存储MySQL中的真/假信息?
特别是在写入和读取PHP脚本的上下文中.
随着时间的推移,我使用并看到了几种方法:
以上都不是最佳的.我更倾向于使用tinyint 0/1变体,因为PHP中的自动类型转换非常简单地给出了布尔值.
那你使用哪种数据类型?有没有为布尔值设计的类型,我忽略了?您是否看到使用某种类型的优点/缺点?
从访问数据库转换或一般情况下,创建是/否布尔字段的最佳做法是什么?
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)