Yas*_*uru 2 mysql where-clause
我在MySQL中找到了一些令我惊讶的东西.我创建了一个表并将记录插入其中,如下所示,
CREATE TABLE `test` (
`ID` int,
`NAME` varchar(100)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO test VALUES (1,'a'),(2,'b'),(3,'c');
Run Code Online (Sandbox Code Playgroud)
现在,我对此运行两个SELECT查询,如下所示,
select * from test where id;
select * from test where name;
Run Code Online (Sandbox Code Playgroud)
我注意到这些查询不会抛出语法错误,但" 第一个 "选择查询返回结果,select * from test;
而" 第二个 " 查询
不返回任何结果.这意味着如果where子句包含" 整数 "列,我会得到一个结果集,而如果where子句包含" varchar "列,则不会得到任何结果集.
谁能告诉我这是MySQL中的错误还是功能?还解释我为什么会这样.
提前致谢!
jue*_*n d 10
在MySQL中0是false和not 0是true.所以
where id比如说就像where 1.
所以你id的全部都是,true并返回记录.
但name不能自动转换为not 0数字而已false.
顺便说一句,如果name列值以数字开头,那么它将被转换为该数字并且 true(例如1tom将返回1).
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |