對于數字大小寫的轉換,也是有一定中國特色的東西。但是在賬務報表中,我們還是需要有這樣的功能的。今天寫了一個將數字金額轉化為大寫的函數。
功能:將任意長度的數字金額轉化為大寫。最低位為圓或角時,后面加"整";為"分"時不加"整"。
說明:小數點后保留兩位。超過兩位的部分被截斷。
代碼:
- PL/SQL?代碼 ?
- Create?Or?Replace?Function?Money2Chinese(Money?In?Number)?Return?Varchar2?Is?
- ??strYuan?Varchar2(150); ?
- ??strYuanFen????Varchar2(152); ?
- ??numLenYuan????Number; ?
- ??numLenYuanFen?Number; ?
- ??strRstYuan????Varchar2(600); ?
- ??strRstFen?????Varchar2(200); ?
- ??strRst??Varchar2(800); ?
- ??Type?typeTabMapping?Is?Table?Of?Varchar2(2)?Index?By?Binary_Integer; ?
- ??tabNumMapping??typeTabMapping; ?
- ??tabUnitMapping?typeTabMapping; ?
- ??numUnitIndex???Number; ?
- ??i??Number; ?
- ??j??Number; ?
- ??charCurrentNum?Char(1); ?
- Begin?
- ??If?Money?Is?Null?Then?
- ????Return?Null; ?
- ??End?If; ?
- ??strYuan?:=?TO_CHAR(FLOOR(Money)); ?
- ??If?strYuan?=?'0'?Then?
- ????numLenYuan?:=?0; ?
- ????strYuanFen?:=?lpad(TO_CHAR(FLOOR(Money?*?100)),?2,?'0'); ?
- ??Else?
- ????numLenYuan?:=?length(strYuan); ?
- ????strYuanFen?:=?TO_CHAR(FLOOR(Money?*?100)); ?
- ??End?If; ?
- ??If?strYuanFen?=?'0'?Then?
- ????numLenYuanFen?:=?0; ?
- ??Else?
- ????numLenYuanFen?:=?length(strYuanFen); ?
- ??End?If; ?
- ??If?numLenYuan?=?0?Or?numLenYuanFen?=?0??
- ????strRst?:=?'零圓整'; ?
- ????Return?strRst; ?
- ??End?If; ?
- ??tabNumMapping(0)?:=?'零'; ?
- ??tabNumMapping(1)?:=?'壹'; ?
- ??tabNumMapping(2)?:=?'貳'; ?
- ??tabNumMapping(3)?:=?'叁'; ?
- ??tabNumMapping(4)?:=?'肆'; ?
- ??tabNumMapping(5)?:=?'伍'; ?
- ??tabNumMapping(6)?:=?'陸'; ?
- ??tabNumMapping(7)?:=?'柒'; ?
- ??tabNumMapping(8)?:=?'捌'; ?
- ??tabNumMapping(9)?:=?
相關閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數據庫實例的控制文件 為UNIX服務器設置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數據處理 Oracle刪除表的幾種方法