gpt4 book ai didi

mysql - 查询始终返回所有数据

转载 作者:行者123 更新时间:2023-11-29 02:28:05 25 4
gpt4 key购买 nike

为什么 MySQL 查询总是返回表中的所有列数据?:

SELECT column 
FROM table
WHERE column = "+"

列类型为 VARCHAR。

最佳答案

好的,在澄清了您的查询之后,发生了什么事情就更清楚了。在 MySQL 中,+ 只是一个数字运算符,不是连接运算符。非数字字符串将始终转换为零,因此如果您尝试将两个空字符串(成对的单引号)“相加”,您实际上是在选择 0 + 0

MySQL> SELECT 1 + 1, '' + '', '1abc' + 1;
+-------+---------+------------+
| 1 + 1 | '' + '' | '1abc' + 1 |
+-------+---------+------------+
| 2 | 0 | 2 |
+-------+---------+------------+
1 row in set, 1 warning (0.00 sec)

并且由于非数字字符串转换为零,您列中的任何非数字字符串都将有效地匹配条件

WHERE column = 0

将零与数字和非数字字符串进行比较的示例:

MySQL> SELECT 'abcd' = 0, '1234' = 0;
+------------+------------+
| 'abcd' = 0 | '1234' = 0 |
+------------+------------+
| 1 | 0 |
+------------+------------+
1 row in set, 1 warning (0.00 sec)

关于mysql - 查询始终返回所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17860502/

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