mysql - `select * from table where cloumn(varchar) =0` 选择所有数据
问题描述
大家,我在 MySQL 5.7 上执行 select 查询时发现了一个奇怪的性能,这真的很困惑。
我的表(MySQL 5.7)
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT '',
`password` char(32) NOT NULL DEFAULT '',
`age` int(11) DEFAULT NULL,
`phone` varchar(32) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
我的 SQL 查询:
SELECT * FROM `user` WHERE name=0
结果
+------+--------+--------------------+-------+---------+
| id | name | payment_password | age | phone |
|------|--------|--------------------|-------|---------|
| 1 | test1 | | 22 | 12345 |
| 2 | test2 | | 15 | 12345 |
| 3 | test3 | | 11 | 12345 |
| 4 | test4 | | 11 | 12345 |
+------+--------+--------------------+-------+---------+
谁能解释为什么会这样?提前致谢!
解决方案
就 MySQL 而言,不以转换为整数的数字开头的字符串是 0。试试这个:
SELECT CAST('test1' AS UNSIGNED), 'test1' = 0
输出:
0 1
的第二个输出值1
表示 MySQL 认为'test1'=0
. 但是如果您的字符串以数字开头,MySQL 会将字符串转换为该数字,例如
SELECT CAST('45test' AS UNSIGNED), '45test' = 45
输出
45 1
同样,第二个输出值1
表明 MySQL 认为'45test'=45
.
推荐阅读
- python - flask - I can't get to show the output of the second app.route
- python - Python sshtunnel 模块无法连接 mysql db
- html - 为什么在调整浏览器窗口大小时我的导航菜单会消失?
- amazon-ec2 - AWS EC2 启动模板与启动配置
- php - Response() 不尊重 API 资源结构
- gulp - 具有全局变量的 Gulp 管道
- extjs - 如何使鼠标光标自动出现在文本框中?
- android - 尝试在 android studio 上构建颤振应用程序,设备没有得到检测
- php - PHP,(如何?)是否可以将 $GLOBALS 数组传递给 shell_exec
- python - 如何使用 mousepressEvent 打开一个新的小部件