问题
之前在用 mysql 查询有 float 字段的时候,比如某一个字段 fee,明明有一条是 fee 为 1.99 的记录,但是就是查不到??

select * from fee_mode where is_pp_recurring = 1 and is_enable = 1 and fee = 1.99

后面查了一下,发现原来查询 float 字段是有坑的:
原来在 MYSQL 中,字段类型为 float 的字段,如果不指定 float 的长度和小数点位数,要根据 float 字段的值精确查找,结果会是空,原因是在 mysql 中,float是浮点数,Mysql存储的时候是近似值,所以用精确查找无法匹配;但可以用like去匹配。

一、解决方法

  1. 修改为 double 类型

将float 改为 double 类型,不会出现这种问题,但是如果数据库中数据量庞大,或者修改量太大,则不适合这个方法.这个方法只适合设计数据库的初期阶段。
原因是这样的:10.28,这样的浮点值在电脑存放为 10.27999973297119140625 这种形式,同时务必注意:修改表字段类型,需要在当前表中无数据的时候修改,如果有数据的话,那已有浮点数据将会出现很多小数点。

  1. 设置float的精度

如果提前知道要查询的 float 字段的值的精度的话,只要设置float的精度然后进行查询也是可以的,比如本例中,1.99 就是两个精度,那么就可以这样查询:

select * from fee_mode where format(fee,2) = format(1.99,2);

这样也是可以的。

  1. 使用concat函数

使用了concat函数,将浮点数用空字符串连接起来,转换成字符串来进行查询:

select * from fee_mode where is_pp_recurring = 1 and is_enable = 1 AND concat(fee, '') = '1.99'


文章转自

mysql 查询有 float 类型的字段查不到相关推荐

  1. SQL查询列名,类型,字段类型

    SQL查询列名,类型,字段类型 SELECTCOLUMN_NAME 列名,COLUMN_TYPE 数据类型,DATA_TYPE 字段类型,CHARACTER_MAXIMUM_LENGTH 长度,IS_ ...

  2. 处理MySQL数据库的BLOB类型的字段

    MySQL BLOB类型简介: 向Customers表中插入一条记录,包含BLOB类型(图片) 删除和修改与插入一致,在这里不再演示(增删改大概一致) package test_blob; impor ...

  3. Mysql中把varchar类型的字段转化为tinyint类型的字段

    因为之前不知道tinyint类型的用法,所以将一些状态属性字段类型设置成了varchar类型,然后用"是"和"否"来判断状态 后来了解到了tinyint,就想试 ...

  4. mysql查询修改数据类型_MySQL增删改查及数据类型

    1.配置文件的使用 配置文件需要放在 安装目录的根目录,bin同一级 文件名称:my.ini 内容和使用 cfg格式 即 section+option [mysqld] 分区服务器端配置 修改后需要重 ...

  5. mysql查询语句能否让一个字段不显示出来_天天写order by,你知道Mysql底层如何执行吗?

    作者:不才陈某 前言 在实际的开发中一定会碰到根据某个字段进行排序后来显示结果的需求,但是你真的理解order by在 Mysql 底层是如何执行的吗?假设你要查询城市是苏州的所有人名字,并且按照姓名 ...

  6. mysql查询有数据但返回null_Mybatis查不到数据查询返回Null问题

    mybatis突然查不到数据,查询返回的都是Null,但是 select count(*) from xxx查询数量,返回却是正常的. Preparing: SELECT id,a9004,a9005 ...

  7. mysql查询同名同姓重名人数,查全国同名同姓人数,姓名重名查询系统全国

    查全国同名同姓人数,姓名重名查询系统全国 时间:2020-05-07 14:30:01 不少父母在为婴儿取名的时候,会有兴趣知道在全中国重名的人数,希望新生儿的姓名不会跟太多人相同.或者有的小伙伴只是 ...

  8. mysql longtext_MySql中LongText类型大字段查询优化

    在本次项目表结构中,有一个longtext字段,用于存储长文本,仅万条数据,InnoDB存储文件就达G级,由于是一个小项目,受限于服务器与运维人员水平,不适合使用hdfs,MongoDB等拓展技术栈来 ...

  9. mysql查询重复名字的数据都查出来_mysql查出重复的所有数据

    写入值 DROP TABLE IF EXISTS `tp_users`; CREATE TABLE `tp_users` ( `user_id` int(11) unsigned NOT NULL A ...

最新文章

  1. 字符串声明太大出现错误_搜索框输入中文出现单引号报错问题
  2. 凸集+非凸集+凸函数+非凸函数
  3. 计算机组成原理课后习题答案一
  4. 五邑大学专插本c语言试题_2019广东专插本各专业报考、录取人数、录取分数及平均分(二)...
  5. 1023:Hello,World!的大小
  6. apache.camel_Apache Camel 2.9发布–十大变化
  7. class传参 python_Python类的概念、定义、属性、继承
  8. Java ArrayList与LinkedList数据结构和特点
  9. Git之同一台电脑连接多个远程仓库
  10. [转载]想要成为Linux大神,你应该和我一样这样做!
  11. 深入探究VC —— 资源编译器rc.exe(3)
  12. 创建Docker私有仓库
  13. Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!
  14. 基于 Flink SQL CDC的实时数据同步方案
  15. 屌炸天,像写代码一样写PPT,reveal-md 详解
  16. 如何学习有限元分析 有限元分析学习心得
  17. 计算机毕业设计Java传统文化知识竞赛系统(源码+系统+mysql数据库+lw文档
  18. 阿里云服务器Ubuntu16.04配置图形界面并远程桌面连接
  19. Java开发基础——配置文件的写入与读取
  20. C语言基础知识点汇总(一)

热门文章

  1. python 全栈开发,Day82(点赞和踩灭,用户评论)
  2. nodejs后台启动
  3. 浅谈python异步IO,同步IO,线程与进程~
  4. ExtJS中layout的12种布局风格
  5. .net中关键字new的用法
  6. 转 Intellij中的常用快捷键
  7. 一个初学者困惑的Oracle的认证问题
  8. STL vector的几种清空容器(删除)办法
  9. java多态替换switch_第1章 重构,第一个案例(3):运用多态取代switch
  10. sublime编译python文件提示can't find '__main__' module in ' '