SQL语句:
SELECT * FROM student WHERE height="180 OR 1=1";
查询结果:
按我理解,应该返回null才对,因为加了双引号,180 OR 1=1是一个整体,如果是系统忽略了双引号,应该返回全部结果,但这里却返回了height=180的结果,不知道为什么。mysql有这么智能吗?
SQL语句:
SELECT * FROM student WHERE height="180 OR 1=1";
查询结果:
按我理解,应该返回null才对,因为加了双引号,180 OR 1=1是一个整体,如果是系统忽略了双引号,应该返回全部结果,但这里却返回了height=180的结果,不知道为什么。mysql有这么智能吗?
4 回答1.6k 阅读✓ 已解决
8 回答1.3k 阅读
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
4 回答2.1k 阅读
2 回答1.7k 阅读
1 回答932 阅读✓ 已解决
从道理来看,应该不是Mysql智能,你这个
height
字段应该是一个int
类型,那么你查询的时候,height="180 OR 1=1"
就会强制转换成int
类型,那么这里根据转换规则得到的结果就是height=180
,至于具体的转换规则,要看mysql官方文档,我就懒得去找了。