【发布时间】:2020-02-03 17:00:30
【问题描述】:
我不想挑剔,但是为什么在您将表列定义为布尔值的那一刻,在您尝试取回表结构的下一刻,它被返回为 tinyint(1)?
所以对于使用创建的表
CREATE TABLE IF NOT EXISTS `test` (
`aField` BOOLEAN DEFAULT true
);
当我试图得到它的结构时
SHOW COLUMNS FROM test
我明白了
+--------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------+------+-----+---------+-------+
| aField | tinyint(1) | YES | | 1 | |
+--------+------------+------+-----+---------+-------+
我对布尔值存储为 tinyint(1) 这一事实没有(大)问题,但我对 当你看到一个 tinyint(1) 的那一刻你不知道这一事实有疑问如果它最初是作为布尔值或作为存储小数字范围的小整数创建的。我看到 MySQL 文档(https://dev.mysql.com/doc/refman/5.7/en/numeric-type-overview.html)这么说
BOOL, BOOLEAN 这些类型是 TINYINT(1) 的同义词
但我不同意上述问题。
我可以运行任何其他查询来返回字段的原始(布尔)类型吗?
【问题讨论】:
标签: mysql boolean sqldatatypes