熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle小數點的實際保留問題的4方案

2013-11-13 22:15:14  來源: Oracle 

  以下的文章主要是講述Oracle小數點的實際保留問題如果你有相關的業務清單有提取要求的話我們需要使用到百分率通常的情況下需要對其保留兩位小數其實我們只用round就可以實現(round(_data) )但是格式不是很工整

  對格式要求不嚴謹的情況下使用round即可以下是網絡搜索到的處理方法

  方法一使用to_char的fm格式

  to_char(round(dataamount)FM) as amount

  不足之處是如果數值是的話會顯示為而不是

  另一需要注意的是格式中Oracle小數點左邊的個數要夠多否則查詢的數字會顯示為n個符號#

  解決方式如下

  select decode(salary(to_char(round(salary)fm))) from can_do;

  方法二使用case when then else end進行各種情況的判斷處理

  case

  when instr(to_char(dataamount) ) < then

  dataamount ||

  when instr(to_char(dataamount) ) + = length(dataamount) then

  dataamount ||

  else

  to_char(round(dataamount ))

  end as amount_format

  方法三可以使用Oracle自帶的參數設置

  lumn amount format l

  此方法的不足是format中的Oracle小數點左面的的個數要已知否則會出現超過的數字顯示為########的情況

  另外一個問題是使用column時設置生效是session級還是system級需要注意

  也許某張表的數值列不總是要求所有的地方顯示時都是Oracle小數點後兩位的格式

  此時只能使用session級但是有個數據庫連接會話超時的問題如果不是使用到system級不建議使用該方法

  方法四使用to_char+trim的方式如下

  select trim(to_char()) from dual;

  或者

  select ltrim(trim(to_char())) from dual;

  此處使用了或者的格式建議使用的方式方便些方法四的不足之處是

  如果數值是的話轉化之後為而不是補救措施是decode一下

  另一需要注意的是格式中Oracle小數點左邊或者的個數要夠多負責查詢的數字會顯示為n個符號#

  如下

  select decode

  (salarytrim(to_char(salary))) from can_do;

  或者

  select decode

  (salaryltrim(trim(to_char(salary)))) from can_do;

  結論建議使用方法四中的trim+to_char的方式或者方法一的補救之後的方式而且最好使用Oracle小數點左邊n個的方式不要使用的方式否則要多一步trim處理

  即

  select decode(salary

  trim(to_char(salary))) from can_do;

  或者

  select decode(salary

  (to_char(round(salary)fm))) from can_do;

  以上的相關內容就是對Oracle小數點的保留問題的介紹望你能有所收獲


From:http://tw.wingwit.com/Article/program/Oracle/201311/18607.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.