在进行数据查询的时候,由于入参接收的问题,导致最终的sql语句变成了 一个数字类型的字段 直接跟 一串字符进行了比较:
类似于
select * from test where test.number >='abcd';
发现将表中所有数据都查出来了。
后来进行了各种测试,发现,如果将 条件里边的 ‘=’ 去掉,数字 0 的那条记录没有被查出来。
查阅资料显示:在比较的时候,字符串和数字进行对比是可能会被转为数字的,具体来说:
- 对于数字开头的字符串来说,转为数字的结果就是截取前面的数字部分,比如 ‘123abc’ 会被转换成 123。
- 而对于开头部分不能截取出数字的字符串来说,例如’asda123’,转换的结果自然就是 0 了,所以结果就是就等于数字0了。
参考:https://blog.wpjam.com/m/mysql-string-int-compare/