我不明白爲什麼隱式轉換對於Oracle中的中值函數不起作用。 (很明顯,我有很多方法可以通過適當的顯式轉換來解決它,但是我想知道爲什麼會發生這種情況。我錯過了一些明顯的東西,或者這是一個錯誤嗎?它似乎不太可能是一個錯誤。)在Oracle中的中值函數中隱式轉換爲數字的故障
我有一個varchar2(255字節)列的表。它是可空的,但不包含空值。該字段中的所有字符串都是數字。
我可以這樣做:
select avg(this_field) from this_table
這很好。
我可以這樣做:
select median(to_number(this_field)) from this_table
那也沒關係。因爲我得到的錯誤
select median(this_field) from this_table
:
但我不能這樣做「ORA-30495:參數應該是數字或日期/時間類型」。
Oracle documentation on MEDIAN的說,隱式轉換完成:
此函數採用作爲參數的任何數字數據類型或可隱式轉換爲數字 數據類型的任何 非數值數據類型。
這與Oracle documentation on AVG的措辭完全相同。
然而:
select median(to_char('1')) from dual;
ORA-30495: The argument should be of numeric or date/datetime type.
select avg(to_char('1')) from dual;
1
select median(to_number(to_char('1'))) from dual;
1
所以......這是怎麼回事?
哈,謝謝有道理!謝謝,我會報告它。 –