--?使用?to_char?函數(shù)轉(zhuǎn)換,轉(zhuǎn)換為字符串
創(chuàng)新互聯(lián)專注于秀洲網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供秀洲營銷型網(wǎng)站建設(shè),秀洲網(wǎng)站制作、秀洲網(wǎng)頁設(shè)計、秀洲網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造秀洲網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供秀洲網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
select?to_char(9.87552,?'fm9999999.00')?from?dual;
--?四舍五入
select?round(9.552,?2)?from?dual;
1、ROUND(A/B,2)
ROUND()函數(shù)是會將計算結(jié)果進(jìn)行四舍五入的,如果所需要的值需要進(jìn)行四舍五入,就可以選擇這個函數(shù),可以有一個參數(shù),也可以有兩個參數(shù);如果有兩個param,第一個是你的計算表達(dá)式,第二個是需要保留的小數(shù)位數(shù)。
2、TRUNC(A/B,2)
TRUNC()函數(shù)是不會將計算結(jié)果進(jìn)行四舍五入的,如果所需要的值不需要進(jìn)行四舍五入,就可以選擇這個函數(shù),可以有一個參數(shù),也可以有兩個參數(shù);如果有兩個param,第一個是你的計算表達(dá)式,第二個是需要保留的小數(shù)位數(shù)。
3、TO_CHAR(A/B,‘FM99990.99’)
TO_CHAR()是一個格式化函數(shù),第一個參數(shù)是計算表達(dá)式,第二個參數(shù)是指定格式化的格式,如果保留兩位小數(shù)則小數(shù)點后寫兩個99,這里的數(shù)字9代表的數(shù)字,也是一個占位符。
表示該位置上以后會是一個數(shù)字,為什么小數(shù)點前面會是一個0,而不是9,是因為如果計算結(jié)果小于1,那么只會顯示小數(shù)點和小數(shù)點之后的部分,前面的0會忽略掉。
擴展資料
Oracle的體系結(jié)構(gòu)
一個Oracle數(shù)據(jù)庫是一個數(shù)據(jù)單位的集合,只要目的是為了存儲和讀取信息。Oracle數(shù)據(jù)庫可以分為邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。
Oracle的邏輯結(jié)構(gòu)是由一個數(shù)據(jù)庫是又一個或多個表空間組成的,一個表空間由邏輯對象組成,一個邏輯對象由多個數(shù)據(jù)段組成,一個數(shù)據(jù)段由一批數(shù)據(jù)區(qū)間組成,一個數(shù)據(jù)區(qū)間由若干個連續(xù)的數(shù)據(jù)塊組成,一個數(shù)據(jù)塊對相應(yīng)一個或多個物理塊。
數(shù)據(jù)塊數(shù)據(jù)庫使用的I/O最小單元,又稱為邏輯塊或者ORACLE塊。常用的大小為2KB或者4KB。
方法一:使用to_char的fm格式
to_char(round(data.amount,2),'FM9999999999999999.00') as amount
不足之處是,如果數(shù)值是0的話,會顯示為.00而不是0.00。
另一需要注意的是,格式中小數(shù)點左邊9的個數(shù)要夠多,否則查詢的數(shù)字會顯示為n個符號“#”。
解決方式如下:
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;
方法二:使用case when then else end進(jìn)行各種情況的判斷處理
case
when instr(to_char(data.amount), '.') 1 then
data.amount || '.00'
when instr(to_char(data.amount), '.') + 1 = length(data.amount) then
data.amount || '0'
else
to_char(round(data.amount, 2))
end as amount_format
方法三:可以使用Oracle自帶的參數(shù)設(shè)置
column amount format l9999999999.99
此方法的不足是,format中的小數(shù)點左面的9的個數(shù)要已知,否則會出現(xiàn)超過的數(shù)字顯示為########的情況。
另外一個問題是,使用column時,設(shè)置生效是session級還是system級,需要注意。
也許某張表的數(shù)值列不總是要求所有的地方顯示時,都是小數(shù)點后兩位的格式,此時只能使用session級,但是有個數(shù)據(jù)庫連接會話超時的問題,如果不是使用到system級,不建議使用該方法。