1.問題起源
oracle 數據庫 字段值爲小於1的小數時,使用char類型處理,會丟失小數點前面的0
例如0.2就變成了.2
2.解決辦法:
(1)用to_char函數格式化數字顯示
select to_char(0.338,'fm9999999990.00') from dual;
結果:0.34
這裏重點要看 fm9999999999.99,表示整數部分最多10位,小數部分2位,fm表示去 掉轉位字符串後前面的空格,不加fm,0.34前面會有空格的.
(2)使用decode函數
既然小於1的小數首位必然是'.',那就判斷首位是否爲'.',是則在前面加上'0'便可
SQL> select decode(substr(num,1,1),'.','0'||num,num) from t1_number
DECODE(SUBSTR(NUM,1,1),'.','0'||NUM,NUM)