在下面的溶液中,我假定str_rate是數據類型數目,所以必須將其首先轉換爲字符。我添加了幾個樣本值來檢查正確處理整數值,並說明兩個值具有相同的最大小數位數的情況。在這種情況下,解決方案返回這兩個值(請參閱底部的結果集)。
with
saxtion_eg (str_rate) as (
select 1.11317 from dual union all
select 123.08546759 from dual union all
select 8.49111 from dual union all
select 582 from dual union all
select 0.00000001 from dual
),
prep (str_rate, char_rate, pos) as (
select str_rate, to_char(str_rate), instr(to_char(str_rate), '.')
from saxtion_eg
),
final (char_rate, dec_digits, max_dec_digits) as (
select char_rate,
case pos when 0 then 0 else length(char_rate) - pos end,
max(case pos when 0 then 0 else length(char_rate) - pos end) over()
from prep
)
select char_rate as str_rate
from final
where dec_digits = max_dec_digits
;
STR_RATE
----------------
123.08546759
.00000001
什麼數據類型是str_rate,數字或VARCHAR2?如果它是varchar2(文本字符串),是否可以存在像1.00000000這樣的值 - 如果是這樣,那麼多少個十進制數字是0或8?最後,在關係情況下應該返回什麼(例如,有三個值,8位十進制數,8是最大值) - 返回所有三個值?如果不是,哪一個? – mathguy