oracle decode與聚合函式連用bug

2022-07-28 11:27:22 字數 867 閱讀 4112

在寫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.

用這條sql查詢出來的最小值確是100.

估計就是oracle的bug.

似乎是只在固定幾個值時發生這種情況,0、50、100、null,decode與max、min連用。

Oracle Decode函式詳解

函式介紹 decode函式是oracle pl sql的功能強大的函式之一,目前還只有oracle公司的sql提供了此函式,其它資料庫廠商的sql實現還沒有此功能。decode有什麼用途呢?先構造乙個例子,假設我們想給智星職員加工資,其標準是 工資在8000元以下的加20 工資在8000元或以上的加...

組合與聚合

定義 has a關係,乙個類中有包含另乙個類,是包含乙個物件,不是包含乙個指標。如果你組合了這個類,那麼你將擁有這個類的全部功能 include include template class queue 利用deque的功能來實現queue新定義的功能 size t size const refer...

oracle decode函式的用法

該函式可以接受可變的引數,具體引數情況如下 decode 條件,值1,翻譯值1,值2,翻譯值2,值n,翻譯值n,預設值 該函式的含義如下 if 條件 值1 return 翻譯值1 else if 條件 值2 return 翻譯值2 else if 條件 值n return 翻譯值n else ret...