Oracle 小數格式化字符串顯示 (轉)

問題描述 
oracle如果存儲number(20,2)數據,0數據庫中爲0.00,2.1數據庫中爲2.10,3.88存儲爲3.88, 
如果直接從數據庫中取出對應顯示爲: 
0 2.1 3.88 保留兩位小數會發生變化,如果需要和數據庫保持一致:


解決方法 
保留兩位有效小數的方法:

SELECT TO_CHAR(3.2,'FM99999999999990D00') FROM DUAL

參考實例:


-- 數字轉字符串格式
select 
    to_char(a, 'FM9990.00')"FM9990D00",
    to_char(a, '99D90')"99D90",
    to_char(a, 'FM90D99')"FM90D99",
    rtrim(to_char(a, 'FM999990D99'), to_char(0, 'D'))"FM999990D99"

from (
    select 50 a from dual
    union all select 50.57 from dual
    union all select 5.57 from dual
    union all select 0.35 from dual
    union all select 0.4 from dual
)

 

   	FM9990D00	99D90	FM90D99	FM999990D99
1	50.00	    50.00	50.	     50
2	50.57	    50.57	50.57	 50.57
3	5.57	    5.57	5.57	 5.57
4	0.35	     .35	0.35	 0.35
5	0.40	     .40	0.4	 0.4

 


分析

  1. 【FM9990.00】格式,皆滿足;代碼更簡潔;與【rtrim(to_char(a, 'FM999990D99'), to_char(0, 'D'))"FM999990D99"】的區別整數是否保留小數。
  2. 【99D90】格式,問題:小數位小於1,0則不顯示。
  3. 【FM90D99】格式,問題:小數位爲0,則不顯示。
  4. 【rtrim(to_char(a, 'FM999990D99'), to_char(0, 'D'))"FM999990D99"】格式,缺點:代碼過於複雜化。

 

知悉


  1. RTRIM(c1,[,c2])
    【功能】刪除右邊出現的字符串
    【參數】C1 字符串
    c2 追加字符串,默認爲空格
    【返回】字符型
    【示例】
    SQL> select RTRIM('gao qian jingXXXX','X') text from dual;
    text
    -----------------
    gao qian jing
    【相似】LTRIM()刪除左邊出現的字符串
    【相反】RPAD() 在列的右邊粘貼字符
  2. 【0】在對應位置返回對應的字符,如果沒有則以'0'填充. to_char(0.34,'9,9,9,0.​0.34';to_char(1234,'9999.00')='1234.00'; 注意事項:這是一個強制的符號,對應位沒有,則以'o'填充,這是9很大不同地方 。
  3. 【9】在小數位,則表示轉換爲對應字符,如果沒有則以0表示;在整數位,沒有對應則不填充字符. to_char(123,'999.99')=123.00; TO_CHAR(123,'99999.9')=123.0; 注意事項:對於0和9而言,如果格式的位數不如數字的位數多,會返回'#'. 譬如to_char(12345,'9999')='#####' 。
  4. 【D】(ISO 小數位符號) '999D99' 這是"點號"的國際版本(ISO),作用等同於點號,也是隻能出現一次.所不同的是,數據庫會根據NLS_NUMERIC_CHARACTER的參數值來設置內容.默認的這個值是點號。
  5. 【FM】代表:刪除如果是因9帶來的空格,則刪除之。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章