gpt4 book ai didi

MySQL tinyint 到 bool 值

转载 作者:行者123 更新时间:2023-11-29 04:32:45 25 4
gpt4 key购买 nike

所以我的数据库中有一个 tinyint 数据类型列,我在其中存储从 02 的值。

据我了解,MySQL 将 tinyint 列中的任何非零数字视为 true(在本例中为 12) 0 为 false。但是,当我执行查询以从 tinyint 行为 true 的表中检索某些信息时,它仅适用于具有 1 的行> 作为值(value)。换句话说,具有 2 作为值的行不会被查询视为 true(并且 0 被视为 )。查询会是这样的:

SELECT data FROM table WHERE active=true

其中 active 的数据类型为 tinyint 并且之前已为其分配值 012 视情况而定。

我是 MySQL 的新手,所以我不知道这里是否遗漏了一些细节,但我不明白为什么它没有在值为 2 的行上返回请求的数据.任何想法都可以在这里提供帮助。

最佳答案

对于MySQL,因为2既不是1也不是0,那么2既不是TRUE FALSE。考虑:

SELECT 2 = TRUE, 2 = FALSE;

返回:

| 2 = TRUE | 2 = FALSE |
| -------- | --------- |
| 0 | 0 |

您需要以不同的方式表达条件,例如:

SELECT data FROM table WHERE active > 0

这也可以工作(任何非零值都被认为是真的,见下文):

SELECT data FROM table WHERE active;

此行为是 documented in the manual ,其中指出:

BOOL, BOOLEAN

These types are synonyms for TINYINT(1). A value of zero is considered false. Nonzero values are considered true.

mysql> SELECT IF(0, 'true', 'false');
+------------------------+
| IF(0, 'true', 'false') |
+------------------------+
| false |
+------------------------+

mysql> SELECT IF(1, 'true', 'false');
+------------------------+
| IF(1, 'true', 'false') |
+------------------------+
| true |
+------------------------+

mysql> SELECT IF(2, 'true', 'false');
+------------------------+
| IF(2, 'true', 'false') |
+------------------------+
| true |
+------------------------+

However, the values TRUE and FALSE are merely aliases for 1 and 0, respectively, as shown here:

mysql> SELECT IF(0 = FALSE, 'true', 'false');
+--------------------------------+
| IF(0 = FALSE, 'true', 'false') |
+--------------------------------+
| true |
+--------------------------------+

mysql> SELECT IF(1 = TRUE, 'true', 'false');
+-------------------------------+
| IF(1 = TRUE, 'true', 'false') |
+-------------------------------+
| true |
+-------------------------------+

mysql> SELECT IF(2 = TRUE, 'true', 'false');
+-------------------------------+
| IF(2 = TRUE, 'true', 'false') |
+-------------------------------+
| false |
+-------------------------------+

mysql> SELECT IF(2 = FALSE, 'true', 'false');
+--------------------------------+
| IF(2 = FALSE, 'true', 'false') |
+--------------------------------+
| false |
+--------------------------------+

关于MySQL tinyint 到 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com