oracle decode与聚合函数连用bug

本文通过创建测试表并使用Oracle中的decode函数结合最大值(max)和最小值(min)函数, 发现了一个特殊场景下的bug。当value列包含特定数值时, decode函数与max/min函数连用会返回错误的最大值和最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近公司的业务要求了一个奇葩的需求,在写sql过程中竟然发现了一个oracle中decode和聚合函数连用的bug.

 

来说一下:

先建一张临时的测试表

create table test (id number,value varchar2(10));

insert into test values(1,0);

insert into test values(2,50);

insert into test values(3,100);

insert into test values(4,200);

 

select a.*,a.rowid from test a;

查询结果如下:

 在这里求value列的最大值,毋庸置疑的是200,

求value列的最小值,一定是0.

但是:

select max(decode(value,0,null,value)) from test;

用这条sql查询出的最大值确是50.

 

select min(decode(value,0,null,value)) from test;



 用这条sql查询出来的最小值确是100.

估计就是oracle的bug.

似乎是只在固定几个值时发生这种情况,0、50、100、NULL,decode与max、min连用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值