ORACLE 数字转换人民币大写

 

 

示例.

 

数字                    :183066999230.68

人民币大写        :壹仟捌佰参拾亿陆仟陆佰玖拾玖万玖仟贰佰参拾圆陆角捌分

 

数字                    :999900000000

人民币大写        :玖仟玖佰玖拾玖亿圆整

 

 

 

Step 1.  Create Lookups:   CUX_CNY_DICTIONARY

(N) Application Developer > Application > Lookups > Application Object Library

 

 

Application Object Library Lookups

Type

CUX_CNY_DICTIONARY

Access Level

 

l    

User

 

Extensible

 

System

Meaning

CUX_CNY_DICTIONARY

Application

Application Object Library

Description

CNY character translation

 

Code

Meaning

Description

Tag

From

To

Enabled

[   ]

0

 

 

 

 

*

 

1

 

 

 

 

*

 

2

 

 

 

 

*

 

3

 

 

 

 

*

 

4

 

 

 

 

*

 

5

 

 

 

 

*

 

6

 

 

 

 

*

 

7

 

 

 

 

*

 

8

 

 

 

 

*

 

9

 

 

 

 

*

 

Q

 

 

 

 

*

 

B

 

 

 

 

*

 

S

 

 

 

 

*

 

Y

亿

 

 

 

 

*

 

W

 

 

 

 

*

 

U

 

 

 

 

*

 

Z

 

 

 

 

*

 

J

 

 

 

 

*

 

F

 

 

 

 

*

 

 

 

Step 2.  Create Function:       CUX_CONVERT_CNY

create or replace function cux_convert_cny(num in number) return varchar2

is

l_receive_number   number(14,2);

l_number   varchar2(100);

l_num_length  number;

l_unit  varchar2(100) := 'QBSGYQBSGWQBSG.JF';

l_cny  varchar2(200);

l_trans_cny  varchar2(200);

 

function translater(transNum in varchar2) return varchar2

is

l_meaning  varchar2(80);

begin

select flv.meaning

  into l_meaning

  from fnd_lookup_values_vl flv

 where     1 = 1

       and flv.enabled_flag = 'Y'

       and sysdate between nvl (flv.start_date_active, sysdate)

                       and nvl (flv.end_date_active, sysdate + 1)      

       and flv.lookup_code = transNum

       and flv.lookup_type = 'CUX_CNY_DICTIONARY'

       and flv.view_application_id = 0

       and flv.security_group_id = 0;

 

return l_meaning;      

end translater;

 

begin

 

--checking input number throw exception

select decode(num, 0, 'x', num) into l_receive_number from dual;

l_number := trim(to_char(l_receive_number, '9999,9999,9999.99'));

l_num_length := length(l_number);

 

--linking number and unit

for numIndex in 1..l_num_length loop

    l_cny := l_cny || (substr(l_number, numIndex, 1) || substr(l_unit, -(l_num_length-numIndex+1), 1));

end loop;

 

--replace symbol

select regexp_replace(l_cny, ',|\.', '') into l_cny from dual;

--insert UZ to 0J0F

select regexp_replace(l_cny, '(0J0F)', 'UZ') into l_cny from dual;

--insert U to xJxF

select regexp_replace(l_cny, '([0-9]J[0-9]F)', 'U\1') into l_cny from dual;

--replace more zero to blank

select regexp_replace(l_cny, '(0Q0B0S0GW)|(0Q0B0S0G)|(0B0S0G)|(0S0G)|(0G)|(G)|(0J)|(0F)', '') into l_cny from dual;

--replace more zero to zero

select regexp_replace(l_cny, '(0Q0B0S)|(0Q0B)|(0Q)|(0B)|(0S)', '0') into l_cny from dual;

 

--translation

for transIndex in 1..length(l_cny) loop

    l_trans_cny := l_trans_cny || translater(substr(l_cny,transIndex, 1));

end loop;

 

return l_trans_cny;

exception when others

then

fnd_file.put_line (fnd_file.output, sqlcode);

fnd_file.put_line (fnd_file.output, sqlerrm);

end;

 

 

 

 

Step 3.  Apply Function: CUX_CONVERT_CNY

 

select cux_convert_cny (183066999230.68) cny from dual;

 

select cux_convert_cny (999900000000) cny from dual;

 

 

 

 

 

 

 

 

 

 

 

 

 

Author

若愚

Creation Date

November 4, 2014

Last Updated

November 4, 2014

Version

V1411.2

 

ORACLE数字转换人民币大写的更多相关文章

  1. 数字转人民币大写(SQL SERVER)

    --数字转人民币大写NumToRMB ---新建方法create  FUNCTION dbo.NumToRMB (@num numeric(14,5))   RETURNS varchar(100) ...

  2. sql 数字转人民币大写函数(两种方法)

    ,)) returns @rmb table( 亿 ) ,仟万 ) ,佰万 ) ,拾万 ) ,万 ) ,仟 ) ,佰 ) ,拾 ) ,元 ) ,角 ) ,分 )) as begin insert in ...

  3. js将数字转换成大写的人民币表达式

    function changeNumMoneyToChinese(money) { var cnNums = new Array("零", "壹", " ...

  4. C# 数字转换成大写

    /// <summary> /// 数字转大写 /// </summary> /// <param name="Num">数字</para ...

  5. 【PHP】金额数字转换成大写形式

    <?php /*将数字金额转成大写*/ function num_to_upper($num) { $d = array('零','壹','贰','叁','肆','伍','陆','柒','捌', ...

  6. 实现数字转换RMB大写~

    实现的功能是将数字“673”转换成“陆佰柒拾叁”    “3681”转换成“叁仟陆佰捌拾壹”     “8007”转换成“捌仟零柒” 主要使用了数组和循环来实现 代码雏形 package com.te ...

  7. PHP实现金额数字转换成大写函数

    <?php header("Content-Type:text/html;charset=utf-8"); function num_to_upper($num) { $d ...

  8. 一个用php写的人民币数字转人民币大写的函数

      function num2rmb ($num) {     $c1 = "零壹贰叁肆伍陆柒捌玖";     $c2 = "分角元拾佰仟万拾佰仟亿";     ...

  9. php数字转人民币金额大写

    numToRmb.php <?php header("content-type:text/html;charset=utf-8"); function numToRmb($n ...

随机推荐

  1. T-SQL通过触发器创建级联更新·级联删除

    create trigger t_table_a on table_a for update,dalete begin if exists(select 1 from inserted) update ...

  2. word公式图片显示不全的问题

    最近处理文档遇到比较棘手的问题,就是单行显示的公式和图片都显示不全,高度撑不起来,会被其他行的内容遮挡. 图片估计是对齐方式照成的,公式调了很久也没有办法.最后找了一个临时折衷的办法: 插入表格,然后 ...

  3. Visual C++ 打印编程技术-编程基础

    背景: windows产生前,操作系统(如DOS等)都不提供支持图像处理的打印机驱动程序,使得程序员为打印出图像,不得不针对使用的打印机 自己编写设备驱动程序,导致了大量的.不必要的重复开发. 随着w ...

  4. cyark - 数字方舟(看侣行第三季时发现的)

    数字方舟 Ben Kacyra

  5. Greedy is Good

    作者:supernova 出处:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=greedyAlg Joh ...

  6. Linux下U盘的格式化

    一次系统装机带来的烦恼. 之前有一次装centos 系统 ,把一个centos4.8的系统刻录到了一个8G的U盘,之后是centos安装成功了 ,却发现电脑不认识U盘了,试了好多次也没有处理好,刚好今 ...

  7. [C#]递归遍历文件夹

    /// <summary> /// 递归获取文件夹目录下文件 /// </summary> /// <param name="pathName"> ...

  8. c#面向对象小结

    特点: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在人们思考习惯的一种思想. 过程和对象在我们的程序中是如何体现的呢?过程其实就是函数: ...

  9. textarea 超过字数

    <textarea name="></textarea> <div id="statementRowChk"></div> ...

  10. 织梦DedeCMS网站地图模板

    亲和百度蜘蛛,分页多层次特色,织梦系统最好用的网站地图! 用 DedeCMS(织梦) 系统搭建的网站多数都是以优化为主要目标的网站类型,既然是优化站 SEO 手段就离不开为网站设置网站地图.可是 De ...