TINYINT(1) 如何转换为 BOOL/BOOLEAN?

Ale*_*iaz 1 mysql datatypes

我可以理解,如果您更新TINYINT(1)列并传递10的值,它将分别将其转换为TRUEFALSE

我只是对当你用不同的值更新列时会发生什么感到困惑,比如2。换句话说,如果您更新TINYINT(1)值为2的列,这是TRUE还是FALSE?或者,这甚至可行吗?

ype*_*eᵀᴹ 6

tinyint 列可以保存从 0 到 255(如果定义为unsigned)或 -128 到 +127(如果定义为)的值signed。该(1)tinyint(1)只对一些格式化选项,通常被忽略。你可以创建它tinyint(100),它不会有什么不同。

关于TRUEor FALSE,任何 int (int, tinyint, smallint, bigint) 值都可以用作(或转换为)布尔值。FALSE如果是0TRUE否则会被考虑。所以,2会算作TRUE

完全清楚,MySQL 没有真正的BOOLEAN类型。BOOLEAN是 的同义词TINYINT(1),正如文档在Numeric Type Overview 中解释的那样:

BOOL, BOOLEAN

这些类型是 的同义词TINYINT(1)零值被认为是错误的。非零值被认为是 true

...

但是,TRUEFALSE分别只是 1 和 0 的别名,如下所示:

...