问题描述
在原生 MySQL 数据库与 OceanBase 数据库 MySQL 模式下创建 float 类型字段的表,并插入数据,执行 SQL 查询,float 类型字段查询结果异常。
原生 MySQL 数据库查询结果:

OceanBase 数据库 MySQL 模式下查询结果:

原生 MySQL 数据库与 OceanBase 数据库 MySQL 模式下 float 类型字段的查询结果不一样,查询结果异常。
适用版本
OceanBase 数据库 V4.2.x 版本。
问题原因
float 字段为非精度字段,导致查询结果异常。
解决方法
float 精度问题导致的,在创建表的时候指定精度如 float(10,4),则原生 MySQL 数据库与 OceanBase 数据库 MySQL 模式下的结果一样,相应的建表语句与测试 SQL 如下。
CREATE TABLE t1_1 (key1 float(10,4) default NULL, UNIQUE KEY key1 (key1));
INSERT INTO t1_1 VALUES (0.3762),(0.3845),(0.6158),(0.7941);
select max(key1) from t1_1 where key1 <= 0.6158;