gpt4 book ai didi

mysql - `select * from table where cloumn(varchar) =0` 选择所有数据

转载 作者:行者123 更新时间:2023-11-29 05:04:09 26 4
gpt4 key购买 nike

各位,我在MySQL 5.7上执行select query的时候发现了一个奇怪的表现,真是一头雾水。

我的表(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

关于mysql - `select * from table where cloumn(varchar) =0` 选择所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51941170/

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