問題描述
既然 MySQL 似乎沒有任何布爾"數據類型,那么您在 MySQL 中濫用"哪種數據類型來存儲真/假信息?
Since MySQL doesn't seem to have any 'boolean' data type, which data type do you 'abuse' for storing true/false information in MySQL?
特別是在編寫和讀取 PHP 腳本的上下文中.
Especially in the context of writing and reading from/to a PHP script.
隨著時間的推移,我使用并看到了幾種方法:
Over time I have used and seen several approaches:
- tinyint,包含值 0/1 的 varchar 字段,
- 包含字符串 '0'/'1' 或 'true'/'false' 的 varchar 字段
- 最后枚舉包含兩個選項真"/假"的字段.
以上似乎都不是最佳選擇.我傾向于更喜歡 tinyint 0/1 變體,因為 PHP 中的自動類型轉換為我提供了相當簡單的布爾值.
None of the above seems optimal. I tend to prefer the tinyint 0/1 variant, since automatic type conversion in PHP gives me boolean values rather simply.
那么您使用哪種數據類型?是否有一種為我忽略的布爾值設計的類型?您認為使用一種或另一種類型有什么優點/缺點嗎?
So which data type do you use? Is there a type designed for boolean values which I have overlooked? Do you see any advantages/disadvantages by using one type or another?
推薦答案
對于 MySQL 5.0.3 及更高版本,您可以使用 BIT
.手冊上說:
For MySQL 5.0.3 and higher, you can use BIT
. The manual says:
從 MySQL 5.0.3 開始,BIT 數據類型用于存儲位域值.一種類型的 BIT(M) 能夠存儲 M 位值.M可以范圍從 1 到 64.
As of MySQL 5.0.3, the BIT data type is used to store bit-field values. A type of BIT(M) enables storage of M-bit values. M can range from 1 to 64.
否則,根據 MySQL 手冊,您可以使用 BOOL
或 BOOLEAN
,它們目前是 tinyint(1):
Otherwise, according to the MySQL manual you can use BOOL
or BOOLEAN
, which are at the moment aliases of tinyint(1):
Bool、Boolean:這些類型是 TINYINT的同義詞一>(1).一個值零被認為是錯誤的.非零值被認為是真實的.
Bool, Boolean: These types are synonyms for TINYINT(1). A value of zero is considered false. Non-zero values are considered true.
MySQL 還聲明:
我們打算實現完整的布爾值類型處理,按照標準 SQL,在未來的 MySQL 中發布.
We intend to implement full boolean type handling, in accordance with standard SQL, in a future MySQL release.
參考:http://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
這篇關于用于存儲布爾值的 MySQL 數據類型的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!