oracle sql 判断函数返回值,Oracle decode()函数返回值问题

本文探讨了在Oracle SQL中遇到的decode()函数返回错误值的问题。当decode函数的第一个可选返回值为null时,Oracle将返回值视为字符串类型,导致后续数字类型的数据被错误地转换。通过实验分析,确认了decode函数的返回值类型取决于第一个条件的返回类型,若为null,则默认处理为字符串,从而引发类型转换错误。
摘要由CSDN通过智能技术生成

今天碰到一个问题,说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

没有什么问题,来看看下面这种写法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值