今天碰到一个问题,说min函数返回错误的取值。详细如下:一个数据表列类型为number(6,2),其中有三行记录,分别为0,0.6和1。用min获取最小值,得到0.6。
min是Oracle SQL的一个基础函数,理论上不会出现这样的Bug之类的。下面一起来模拟下实验环境。
1、环境构建
在实验数据库Oracle 11g环境下,构建实验数据表t。填入实验数据。
SQL> create table t (num number(6,2));
Table created
SQL> insert into t values (0);
1 row inserted
SQL> insert into t values (0.6);
1 row inserted
SQL> insert into t values (1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from t;
NUM
--------
0.00
0.60
1.00
实验
SQL> select min(num) from t;
MIN(NUM)
----------
0
SQL> select min(to_number(num)) from t;
MIN(TO_NUMBER(NUM))
-------------------
0
没有什么问题,来看看下面这种写法: