gpt4 book ai didi

mysql - MySQL 中的 Where 子句魔法

转载 作者:行者123 更新时间:2023-11-29 01:08:35 25 4
gpt4 key购买 nike

我在 MySQL 中发现了一些让我非常惊讶的东西。我创建了一个表并将记录插入其中,如下所示,

CREATE TABLE `test` (
`ID` int,
`NAME` varchar(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO test VALUES (1,'a'),(2,'b'),(3,'c');

现在,我运行两个 SELECT 查询,如下所示,

select * from test where id;

select * from test where name;

我注意到这些查询不会抛出语法错误,但“first”选择查询返回结果为从测试中选择 *;而“second”则不返回任何内容。这意味着如果 where 子句包含一个“integer”列,我会得到一个结果集,而如果 where 子句包含一个“varchar”列,我不会得到任何结果集。

谁能告诉我这是 MySQL 中的错误还是特性?也解释一下为什么会这样。

提前致谢!

最佳答案

在 MySQL 中,0falsenot 0true。所以

where id 例如 where 1

所以你的 id 都是 true 并返回记录。

但是 name 不能自动转换为 not 0 的数字,并且是 false

顺便说一句,如果 name 列值以数字开头,那么它将被转换为该数字并为 true(例如 1tom 将在 1 中返回)。

关于mysql - MySQL 中的 Where 子句魔法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27738980/

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