mysql float字段类型数据查询为空问题
2023-06-13 09:11:05 时间
mysql float字段类型数据查询为空问题
作者:matrix 被围观: 224 次 发布时间:2021-12-28 分类:mysql PHP | 无评论 »
结论
不要用float、double类型存储浮点数。改用decimal字段类型
过程
之前是知道浮点数最好不要用float类型做存储,手上遇到老项目使用就正好是float字段存储的体重数据,比如51.6
这种。
普通的查询没问题,个别数据就出现查询为空的问题。后来发现都是浮点类型数据,排查框架的sql日志到PDO的参数绑定找遍了都没找到根源。还以为是PDO扩展的data_type出错,因为内部sql执行时浮点数的参数绑定是使用PDO::PARAM_STR
。
$this->PDOStatement->bindValue(':ThinkBind_1_', 51.6, PDO::PARAM_STR)
虽然字段设置了精度float(10,2)
,但是依然有查询为空出现。这就是float精度导致的问题。
吐槽
TP5.1 sql日志输出不准确,和实际执行的不一致!
sql输出日志为where wi=51.6
,实际上执行是where wi="51.6"
,这也增加了排查的难度。
办法
- 浮点数查询使用like
- 使用函数比如
oncat(wi)=51.6
,或者format(wi,2) = format(51.6 ,2)
- 使用
decimal
字段类型
参考:
https://www.cnblogs.com/powerwu/articles/8465031.html
https://blog.csdn.net/luccs624061082/article/details/84286253
相关文章
- MySQL同步与异步:动态实现数据一致性(mysql同步异步)
- 驾驭数据:利用阿里云MySQL提升业务性能(阿里云mysql数据库)
- 填充MySQL:解决字段空格填充问题(mysql字段空格)
- MySQL远程连接命令:实现数据集中管理(mysql远程链接命令)
- 查询MySQL分页查询 – 快速查询亿级数据(mysql的分页)
- MySQL 不支持 GBK:引发的问题及解决办法(mysql不支持gbk)
- MySQL大数据分页查询:达到更高效率的必要步骤(mysql大数据分页查询)
- MySQL 服务丢失:担心的时刻来临(mysql服务消失)
- 快速导入MySQL表格:简单易行!(mysql导入表格数据)
- 库安全风险MySQL数据库安全:有风险也有解决方案(mysql是否有数据)
- 处理MySQL中的二进制数据处理(mysql二进制数据)
- MySQL: 查询与删除数据(mysql查询删除数据)
- MySQL的累计求和技术实现(mysql累计求和)
- 如何在 MySQL 中启动安全模式?(mysql安全模式启动)
- MySQL空间存储的优秀实践(mysql 空间存储)
- Mysql表轻松导入导出,数据永不丢失(mysql表的导入导出)
- 从零开始CRT环境下安装MySQL教程(crt安装mysql教程)
- MySQL数据库监控从C语言到安全运行(c mysql数据库监听)
- AIX平台下登录MySQL数据库的操作指南(aix下登录mysql)
- 探究Windows下CMD无法使用MySQL的原因(cmd使用不了mysql)
- 让MySQL轻松搞定sql数据导入(.sql数据导mysql)
- MySQL是用来管理和存储数据的一种关系型数据库管理系统它可以用于Web开发应用程序和企业级数据库
- MySQL异常频繁,数据操作受阻(mysql一直出错)
- 掌握MySQL一百条查询命令,轻松查询数据(mysql一百条查询命令)
- 使用MySQL Yog轻松创建数据库表格(mysql yog创建表)
- MySQL实现两个字段的数据连接操作(mysql两字段相连接)
- MySQL储存中文问题解决方法(mysql不能存放中文)
- 深入了解MySQL的不等表达式(mysql 不等的表达)
- 避免数据缺失,MySQL值不能为空(mysql不得为空值)