最近公司的业务要求了一个奇葩的需求,在写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连用。
相关推荐
关于oracle decode函数的用法
Oracle中Decode()函数的有关用法Oracle中Decode()函数的有关用法
Oracle中Decode()函数使用技巧Oracle中Decode()函数使用技巧Oracle中Decode()函数使用技巧
Oracle中Decode()函数使用技巧
oracle中decode()函数使用技巧 很有帮助的哦
本文讲述了Oracle-Decode()函数和CASE语句的比较。
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ...... ELSIF 条件=值n THEN RETURN(翻译值n) ...
DECODE函数相当于一条件语句(IF).它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。
Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解。 Oracle DECODE函数 Oracle DECODE函数是Oracle公司独家提供的功能,它是一个功能很强的...
DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值。区别于SQL的其它函数,DECODE函数还能识别和操作空值。本文详细介绍了DECODE函数的语法。
今天上头要求做一个类似的功能,初步想到的列转行,但是如何实现也没有什么好办法,这个函数不错DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现...
NULL 博文链接:https://lisanlai.iteye.com/blog/793404
urlEncode加密后的中文进行解码,对于分析远程链接很有帮助。
使用DECODE实现统计,是比较常用的。 但是在遇到需要组合条件进行统计时,有时却不如case when 或者另建视图好用。 可是有时就想用DECODE,咋办? 这里给大家介绍一下DECODE如何实现组合条件查询,一句SQL查询一张...
主要介绍了oracle中decode函数的使用方法,需要的朋友可以参考下
DECODE函数,是ORACLE公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。 今天看别人的SQL时看这里面还有decode()函数,以前从来没接触到,上网...
博客:PostgreSQL的学习心得和知识总结(四十四)|语法级自上而下完美实现Oracle数据库DECODE函数的实现方案(GreenPlum & AntDB)
主要介绍了oracle中decode函数的使用方法示例,还是比较不错的,这里分享给大家,供需要的朋友参考。