mysql的float条件查询不到结果,sql的一些其他问题
记一下今天遇到的问题
1. float用=匹配不到结果
sql: select * from table1 where low=74.9 # 这个sql查不到结果,但是实际上数据库里面有,low是float类型
将low字段换成decimal类型,就可以查出来结果
原因:
float类型存在误差,不能使用=号来比较值。大部分用float类型的字段,应该都是取范围做比较的。
如果没有特别要求,设计数据库的时候,建议使用decimal类型
2. 其他sql(有知道原因的老哥,方便的话,可以在评论区指点一下,mysql版本:5.7.36)
先创建一个表
create TEMPORARY table temp_0716 ( id serial, fl decimal(16,3), bo boolean ); insert into temp_0716(fl,bo) values (22.3,false) (22.3,true);
sql1:
select * from temp_0716 where id='1 or 1=1' 能查到id=1的数据
sql2:
select * from temp_0716 where bo='true' select * from temp_0716 where bo='false' 这两条语句执行的结果,查到的是同一条数据。但是把引号去掉就不是同一条了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
2021-07-16 python缩小图片