1. 程式人生 > >Oracle資料庫,數字強制顯示2位小數

Oracle資料庫,數字強制顯示2位小數

在銀行、財務等對數字要求敏感的系統中,數字的顯示一般有著嚴格的要求。
今遇到一個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。
例如:
123.4 顯示為 123.40
12    顯示為 12.00
0     顯示為 0.00


本以為這是個比較簡單的問題,Oracle本身提供了to_char函式,帶有格式化功能,能夠滿足條件:

select to_char(123.4, '9999990.00') as aa from dual;
select to_char(12, '9999990.00') as aa from dual;
select to_char(0, '9999990.00') as aa from dual;

select to_char(123.4, 'fm9999990.00') as aa from dual;
select to_char(12, 'fm9999990.00') as aa from dual;
select to_char(0, 'fm9999990.00') as aa from dual;

至此,本以為問題解決了,但是卻沒有注意到,以上的語句格式化的是字串,而不是數字!!
需求中,很明確的要求,將數字格式化,結果仍然為數字。


分析:該需求是一個非常常見、且正常的需求,既然Oracle如此強大,應該會提供相關的方法,
於是乎,查詢Oracle的相關文件,終於,找到個有個cast函式,該函式負責型別轉換,嘗試之。
結果顯示,該方法確實可行。測試SQL語句如下:

select CAST(1234.4 AS NUMBER (10, 2) ) as aa from dual ;
select CAST(12 AS NUMBER (10, 2) ) as aa from dual ;
select CAST(0 AS NUMBER (10, 2) ) as aa from dual ;
PS:追加一點,字串可以直接進行型別轉換,而無需使用to_number()函式做中間轉換。SQL語句如下:
select CAST('1234.4' AS NUMBER (10, 2) ) as aa from dual ;
select CAST('12' AS NUMBER (10, 2) ) as aa from dual ;
select CAST('0' AS NUMBER (10, 2) ) as aa from dual ;

PS:追加第二點,網上看到有人說,小數點後是否顯示完全,PL/SQL的版本有關。
本人未做驗證,不發表個人意見,僅在此記錄一下,如以後遇到問題,再行驗證。

相關推薦

Oracle資料庫數字強制顯示2小數

在銀行、財務等對數字要求敏感的系統中,數字的顯示一般有著嚴格的要求。 今遇到一個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。 例如: 123.4 顯示為 123.40 12    顯示為 12.00 0     顯示為 0.00 本以為這是個比

Oracle數據庫數字強制顯示2小數

view sele IT csdn start 小數點 方法 key ews 在銀行、財務等對數字要求敏感的系統中,數字的顯示一般有著嚴格的要求。今遇到一個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。例如:123.4 顯示為 123.4012

input輸入框數字限制(2小數含0的正整數)

小弟因為長期從事後臺服務端開發。對頁面越來越生疏。。近期領導就要求修改一個後臺管理端。是關於input輸入限制的金額得。。腦闊疼。。好不容易寫出來,還是前端人員幫忙寫的。趕緊記錄下。以後要好好研究一下正則怎麼寫。。。 首先,顯示2位小數,必須輸入2位小數。0.00可過,0.12可過,0123.11不可過&n

JS驗證輸入框只能輸入數字並且只能含有2小數

<script language="JavaScript" type="text/javascript"> //輸入框只能輸入數字,並且只能含有2為小數 function clearNoNum(obj){ obj.value = obj.value.replace(/[^\d.]/g,""); /

sqlserver中四捨五入之後小數點後顯示2的sql文

select   cast(round(12.5,2)   as   numeric(5,2)) 解釋: round()函式,是四捨五入用,第一個引數是我們要被操作的資料,第二個引數是設定我們四捨五入之後小數點後顯示幾位。 numeric函式的2個引數,第一個表示資料長度,

已知某學生三科考試成績試求此學生考試成績總和及平均分要求平均分保留2小數

import java.util.Scanner;public class average { public static void main(String[] args)  {  Scanner ina =new Scanner(System.in);  int a = i

Oracle資料庫當前時間轉為星期的語句和查詢某一欄轉為星期顯示的一種方法。

1、當前時間的星期 select to_char(sysdate,'day') from  dual  ;   2、指定欄位的星期 select decode (substr(to_char(t.欄位,'d','NLS_DATE_LANGUAGE

正則限制輸入為數字且最多輸入2小數 之 新寫法

符號 接受 fff asc pad 函數 ext www 對象   原本小程序需要一個限制文本框輸入為數字,且最多保留2位小數的效果,網上找到的例子感覺有點繁瑣,就自己寫了一個。 代碼很簡單,主要借助了正則的組匹配特性進行處理: //檢查輸入文本,限制只能為數字並且數字最

thinkphp 3.2連結Oracle資料庫查詢資料

ennnn,換工作了,開始用新的東西了,最近就是呼叫nc介面,資料庫是Oracle,首先先把資料查出來,這個比較簡單。 在網上看的其他的方法都是改資料庫配置檔案,然後需要修改tp核心的一個類檔案,比較繁瑣, 現在教你一個超級簡單的方法,不需要改任何地方,自己寫就行了 public function

字串長度超過4000字元的資料存入oracle資料庫裡clob型別的欄並之後做前臺查詢展示

這個過程會產生的問題有: 1. 因為oracle的兩個單引號之間字元長度不能超過4000,字串長度超過4000字元後或報字元過長的錯,無法直接insert或update進資料庫,必須得轉換成clob型別。 2.查出來的clob資料不是字串,無法直接展示。 我在ssm框架

oracle 資料庫 查詢數字型別 轉 String 時丟失小數點前的0

今天遇到一個奇葩的問題,當查詢資料庫的欄位為數字時,而javaBean定義的是String時,自動轉換得到的字串會丟失小數點前的 0 。 比如資料 是 0.88 , 查詢得到的字串為 .88 。解決方案: 使用 oracle的tochar() 函式,並指定位數。例子:to_c

PowerDesigner從資料庫中反向生成PDMName不顯示說明的解決方法

使用Reverse engineer從資料庫反向生成PDM的時候,PDM中的表的Name和Code事實上都是Code,為了把Name替換為資料庫中Table或Column的中文Comment,可以使用以下指令碼: 在PowerDesigner中使用方法為:   PowerD

數字保留2小數

cnblogs pan ber var 小數位數 back cti style clas 1、toFixed(num) 方法可把 Number 四舍五入為指定小數位數的數字。(num可取0-20,包括0、20) <script> var a=3.141

JS 保留2小數 四舍五入(小數點後面不足2自動用0補齊)

sna change ima var 不足 保留 art turn ring function changeTwoDecimal_f(x) { var f_x = parseFloat(x); if (isNaN(f_x)) { alert(‘fu

js 銀行卡四一隔錢三用逗號隔開並強制保留兩小數

orm num ava asc number locale rep atm 銀行 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>

SQL Server 數值四舍五入小數點後保留2

小數 設置 報錯 ref lec numeric server article 原因 1.round() 函數是四舍五入用,第一個參數是我們要被操作的數據,第二個參數是設置我們四舍五入之後小數點後顯示幾位。 2.numeric 函數的2個參數,第一個表示數據長度,第二個參數

oracle資料庫查詢某個表的欄資訊

(1)查詢整個資料庫所有表的欄位 select t.column_name from user_col_comments t;(一般建議去執行,因為資料庫表過多執行起來會非常的慢) (2)查詢特定表名的表字段 select t.column_name, t.column_name&nbs

保留兩小數點保留2小數如:2會在2後面補上00.即2.00

function toDecimal2(x) {       var f = parseFloat(x);       if (isNaN(f)) {   

Mysql資料庫切換成Oracle資料庫使用Mybatis+Oracle整合專案Mysql與Oracle差別總結

最近公司給我一個任務,把現有專案由Mysql切換成Oracle,而且還要求相容Mysql和Oracle資料庫。網上有很多類似的資源,說了這兩個資料庫的差別,但是沒有進行完整的總結。在這個任務完成後,我在這裡總結一下。 1.原有的mysql的insert語句,沒有做空判斷,也沒有指定jdbc型別,

解決使用Oracle資料庫專案啟動由於表原因無法成功啟動問題

    1.仔細看異常資訊,如果出現一個  翻譯過來是 不僅僅這一張表,那就說明,在連線資料庫,定位到表的時候有多張表,不知道連哪一張。       原因: 有多個使用者,這兩個使用者下有相同的表。 就算是在不同的表空間也不行。  本人猜測在不同的例項下應該是可以存在