Oracle查詢保留兩位小數

2021-06-20 16:17:30 字數 2082 閱讀 8028

to_char(欄位名,'999,999,999.99'

)

使用to_char的方式,有兩個弊端,也是需要注意的地方:

1>整數部分的9要寫的足夠多,否則會錯誤顯示,如下:

錯誤:select to_char(199999999.1256,'9,999.99') from dual              --顯示結果:#########

正確:select to_char(199999999.1256,'999,999,999.99') from dual   --顯示結果:199,999,999.13

2>對0這種情況要單獨處理,當為0時,會顯示為.00,而非0.00。如下:

錯誤:select to_char(0,'9,99.99') from dual        --顯示結果:.00

正確:select decode(0,0,'0.00',to_char(199999999.1256,'999,999,999.99')) from dual    --顯示結果:0.00

一、round(四捨五入):round( number, [ decimal_places ] )

描述 : 傳回乙個數值,該數值是按照指定的小數字元數進行四捨五入運算的結果。

select round( number, [ decimal_places ] ) from dual

引數:number : 欲處理之數值

decimal_places : 四捨五入 , 小數取幾位 ( 預設為 0 )

示例 :

select round(123.456, 0) from dual;          回傳 123

select round(123.456, 1) from dual;          回傳 123.5

select round(123.456, 2) from dual;          回傳 123.46

select round(123.456, 3) from dual;          回傳 123.456

select round(-123.456, 2) from dual;         回傳 -123.46

當然,保留兩位小數的處理,在格式要求的不是很嚴格的條件下,也可以用round函式。

在保留小數這個問題上round函式有以下弊端:

①當為整數時,無論如何寫,最終返回的都是整數,如下:

select round(199.000,2) from dual --199

②返回值中不會自帶千分符,如下:

select round(199999.2356,2) from dual  --199999.24

二、decode:decode(input_value,value,result[,value,result…][,default_result])

描述:decode函式相當於一條件語句(if).它將輸入數值與函式中的引數列表相比較,根據輸入值返回乙個對應值。函式的引數列表是由若干數值及其對應結果值組成的若干序偶形式。當然,如果未能與任何乙個實參序偶匹配成功,則函式也有預設的返回值。區別於sql的其它函式,decode函式還能識別和操作空值.

decode(input_value,value,result[,value,result…][,default_result]);

引數:input_value 試圖處理的數值。

value  是一組成序偶的數值。如果輸入數值與之匹配成功,則相應的結果將被返回。對應乙個空的返回值,可用關鍵字null於之對應。

result  是一組成序偶的結果值。

default_result 未能與任何一序偶匹配成功時,函式返回的預設值。

示例:select checkup_type,

decode(blood_test_flag,』y』,』yes』,』n』,』no』,null,』none』,』invalid』)

from checkup;

Oracle 之 保留兩位小數

專案需要使用百分率,保留2位小數,只用 round 和 trunc 函式都可以實現 round data,2 只是格式不是很工整,對格式要求不嚴謹的情況下使用 round 即可。以下是比較方便的一種 select decode n jg,0,0.00 trim to char n jg,999999...

保留兩位小數

1.只要求保留n位不四捨5入 float f 0.55555f int i int f 100 f float i 1.0 100 2.保留n位,四捨五入 decimal d decimal.round decimal.parse 0.55555 2 3.保留n位四捨五入 math.round 0....

保留兩位小數

num 10.4567 第一種 利用round 對浮點數進行四捨五入 echo round num,2 第二種 利用sprintf格式化字串 format num sprintf 2f num echo format num 第三種 利用千位分組來格式化數字的函式number format echo...