在銀行、財務等對數字要求敏感的系統中,數字的顯示一般有著嚴格的要求。
今遇到乙個需求,如題,要求將數字以兩位小數的格式顯示,如果沒有小數,則強制顯示為0。
例如:123.4 顯示為 123.40
12 顯示為 12.00
0 顯示為 0.00
本以為這是個比較簡單的問題,oracle本身提供了to_char函式,帶有格式化功能,能夠滿足條件:
[sql]
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語句如下:
[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語句如下:
[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資料庫的使用者連線
首先查詢目標使用者的當前程序,注意是serial 而不是serial,網上有的介紹漏掉了 select sid,serial from v session where username erp 使用此語句會返回乙個程序列表,每行有兩個數字,然後用數字替代下面的sid和serial alter sys...
強制關閉MySQL資料庫
在使用mysql資料庫的過程中有時候會發現無法關閉資料庫,後來發現是因為使用者不是我本人開啟的,可以使用下面的命令列強制關閉 sudo usr local mysql support files mysql.server stop 或者使用命令列 sudo usr local mysql suppo...
oracle資料庫賦權 Oracle資料庫許可權
oracle資料庫許可權基本認識 一 oracle許可權 oracle系統提供三種許可權 object 物件級 system 系統級 role 角色級。許可權分類 1 系統許可權 系統規定使用者使用資料庫的許可權。系統許可權是對使用者而言 2 實體許可權 某種許可權使用者對其它使用者的表或檢視的訪問...