首頁 資料庫 mysql教程 oracle保留两位小数解决方案

oracle保留两位小数解决方案

Jun 07, 2016 pm 05:55 PM
保留 小數

公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可

公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可.

个人认为比较方便的一种
select decode(n_jg,0,'0.00',trim(to_char(n_jg,'9999999.99'))) from tbl
如果只是检索,可是使用:
1、select trunc(CUR_SUM,2) from data_record;
将小数转化成百分比=> round(zcbj/zs*100)||'%' ==trunc((zcbj/zs),2)*100||'%'
2、如果想更新数据,可以使用:
update data_record set CUR_SUM=trunc(CUR_SUM,2) where REC_NO=123

方法一:使用to_char的fm格式
to_char(round(data.amount,2),'FM9999999999999999.00') as amount
不足之处是,如果数值是0的话,会显示为.00而不是0.00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

方法二:使用case when then else end进行各种情况的判断处理
case
when instr(to_char(data.amount), '.') 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自带的参数设置
column amount format l9999999999.99
此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。
另外一个问题是,使用column时,设置生效是session级还是system级,需要注意。
也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,此时只能使用session级,但是有个数据库连接会话超时的问题,如果不是使用到system级,不建议使用该方法。

方法四:使用to_char+trim的方式
select trim(to_char(1234,'99999999999999.99')) from dual;
或者
select ltrim(trim(to_char(1234.525,'00000000000000.00')),'0') from dual;
此处使用了14个9或者14个0的格式,建议使用14个9的方式,方便些。方法四的不足之处是:
如果数值是0的话,转化之后为.00而不是0.00,补救措施是,decode一下。
另一需要注意的是,格式中小数点左边9或者0的个数要够多,负责查询的数字会显示为n个符号“#”。
如下:
select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',ltrim(trim(to_char(salary,'00000000000000.00')),'0')) from can_do;
结论:建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式,而且最好使用小数点左边n个9的方式,不要使用0的方式,否则,要多一步trim处理。
即:select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
javascript怎麼將整數轉為小數 javascript怎麼將整數轉為小數 Nov 03, 2021 pm 05:59 PM

在javascript中,可以利用toFixed()函數來將整數轉為小數,該函數能夠把整數轉換為指定小數位數的數字;語法“number.toFixed(x)”,參數“x”規定小數的位數。

Python的round()函數:保留指定位數的小數 Python的round()函數:保留指定位數的小數 Nov 18, 2023 pm 05:35 PM

Python的round()函數:保留指定位數的小數,需要具體程式碼範例概述:在Python程式設計中,經常需要對浮點數進行四捨五入,以保留指定位數的小數。為了解決這個問題,Python提供了round()函數。本文將介紹round()函數的用法,並提供一些具體的程式碼範例。 round()函數的用法:round()函數是Python內建的一個函數,用來對浮點數進行四

艾爾登法環二週目會保留什麼 艾爾登法環二週目會保留什麼 Mar 11, 2024 pm 02:31 PM

玩家在艾爾登法環中進行遊戲時在通關後還可以開啟二週目,有很多玩家不知道二週目會保留什麼,二週目時和人物的屬性,戰鬥力相關的東西都會保留。艾爾登法環二週目會保留什麼1、二週目只會繼承等級、裝備和道具。 2、艾爾登法環二週目的等級,裝備,武器,禱告,魔法,骨灰,護符,滴露,戰灰等都是會保留的。 3.可以簡單理解為裝備清單的所有東西,都是保留的,包括武器的強化等級。 4.所有的營火,劇情相關道具不會繼承,地圖上的收集元素不保留,大盧恩不會保留。

Win11升級會保留原軟體的詳細資料嗎? Win11升級會保留原軟體的詳細資料嗎? Dec 31, 2023 pm 02:49 PM

軟體是我們在使用電腦時最重要的部分,本質上一般人使用電腦就是為了使用這些軟體,因此如果升級win11會清除軟體將會帶來很大的不便。不過如果我們能夠正常升級win11,其實是會保留所有軟體的,大家不需要擔心,下面就一起來看一下吧。升級到win11軟體會保留嗎答:所有軟體都會保留。 1.在官方的Q&A中,微軟就表示了升級到win11會保留所有的文件和數據,其中當然也包括了所有的軟體。 2.因此,大家可以放心升級win11系統。 3.這其實不代表我們可以完全不對重要文件進行備份。 4、因為win11畢

如何只保留win10專業版鏡像 如何只保留win10專業版鏡像 Jan 02, 2024 pm 06:37 PM

有些使用者在操作下載安裝win10系統的時候都會遇到一些問題,比如說安裝變成專業版,這個時候我們可以去自己下載你想要的系統版本來進行使用,重新安裝一下就可以了。 win10鏡像只保留專業版怎麼辦答:可以去重新安裝一個系統版本。這裡推薦選擇莓果一鍵裝機,可以直接下載安裝軟體以後選擇你想要的系統版本然後進行選擇就可以了。 1.點選後面的藍色字體就可以進入到下載頁面了。 >>>2、進入以後下載好軟體然後操作,詳細的步驟可以查看這篇文章。 >>>win10專業版和家用版哪個好答:看

php怎麼處理小數?多種方法介紹 php怎麼處理小數?多種方法介紹 Mar 28, 2023 pm 03:45 PM

PHP是Web開發中最受歡迎的程式語言之一。在PHP中,小數的處理是非常重要的,因為在實際的程式設計工作中,我們經常需要對小數進行精確運算。本文將介紹幾種處理小數的方法,以便更有效率地進行小數運算。

駕馭PHP BCMath擴展:開啟高精度數學的大門 駕馭PHP BCMath擴展:開啟高精度數學的大門 Feb 23, 2024 am 09:22 AM

PHPBCMath擴充是php標準函式庫中一個強大的工具,它提供了豐富的函數函式庫,能夠處理大數字、小數和分數等複雜的計算。與PHP內建的數學運算子和函數相比,BCMath擴展能夠提供更高的精度和更廣泛的運算範圍,從而滿足各種科學、工程和金融等領域的高精度數學計算需求。為了使用BCMath擴展,您需要在PHP腳本中包含以下程式碼:其中,bcscale()函數用於設定小數點後的位數,預設值為0,表示不保留小數。您可以根據需要調整此值以控制計算精度

將以下內容翻譯為中文:在C程式中列印1/n的前k位小數,其中n為正整數 將以下內容翻譯為中文:在C程式中列印1/n的前k位小數,其中n為正整數 Aug 28, 2023 pm 07:29 PM

輸入數字N,這樣1/N將返回以十進制指定的形式產生的輸出,直到達到限制。使用浮點數很容易,但挑戰在於不使用它們。輸入−n=5k=5輸出−20000這表示如果n=5且k=5除以1/5後的輸出應顯示至小數點後5位。演算法StartStep1->Declareintvariablento9andkto7andremainto1andiStep2->Loopforito0andi<kandi++  Print((10*remain)/n)&n

See all articles