我可以理解,如果您更新TINYINT(1)列并传递1或0的值,它将分别将其转换为TRUE或FALSE。
我只是对当你用不同的值更新列时会发生什么感到困惑,比如2。换句话说,如果您更新TINYINT(1)值为2的列,这是TRUE还是FALSE?或者,这甚至可行吗?
tinyint 列可以保存从 0 到 255(如果定义为unsigned)或 -128 到 +127(如果定义为)的值signed。该(1)中tinyint(1)只对一些格式化选项,通常被忽略。你可以创建它tinyint(100),它不会有什么不同。
关于TRUEor FALSE,任何 int (int, tinyint, smallint, bigint) 值都可以用作(或转换为)布尔值。FALSE如果是0,TRUE否则会被考虑。所以,2会算作TRUE。
完全清楚,MySQL 没有真正的BOOLEAN类型。BOOLEAN是 的同义词TINYINT(1),正如文档在Numeric Type Overview 中解释的那样:
BOOL,BOOLEAN这些类型是 的同义词
TINYINT(1)。零值被认为是错误的。非零值被认为是 true:...
但是,值
TRUE和FALSE分别只是 1 和 0 的别名,如下所示:...