甲骨文中文数字转阿拉伯数字

创建或替换函数chi2num (chivalue VARCHAR2)返回数量

,类型映射表BINARY_INTEGER指数VARCHAR2 (10),
,ling_jiu_map ,地图;
,shibaiqian_map地图;
,wanyizhao_map 地图;
,——临时变量
,小姐,,,,,,,,,,,INT:=0;——“临时变量
,k ,,,,,,,,,,INT:=0;——临时变量
,x ,,,,,,,,,,INT:=0;——临时变量
,str ,,,,,,,,VARCHAR2 (100):=";——临时变量
,tmp ,,,,,,,,INT:=0;——临时变量
,tmp2 ,,,,,,,INT:=0;——临时变量
,integer_part VARCHAR2 (100):=";——数字形式整数部分
,float_part ,VARCHAR2 (100):=";——数字形式小数部分
,returnvalue 数量:=0;——返回值

开始,——初始化数组
,ling_jiu_map(“零”):=0;
,ling_jiu_map(一):=1;
,ling_jiu_map(二):=2,
,ling_jiu_map(三):=3;
,ling_jiu_map(四):=4;
,ling_jiu_map(五):=5;
,ling_jiu_map(六):=6;
,ling_jiu_map(七):=7;
,ling_jiu_map(八):=8;
,ling_jiu_map(九):=9;
,shibaiqian_map (”):=0;
,shibaiqian_map(十):=1;
,shibaiqian_map(“百”):=2,
,shibaiqian_map(“千”):=3;
,wanyizhao_map (”):=0;
,wanyizhao_map(万):=1;
,wanyizhao_map(“亿”):=2,
,wanyizhao_map(兆):=3;

,的str:=REGEXP_REPLACE (chivalue, ' ^十”、“一十”);
,的str:=REGEXP_REPLACE (str,‘零十”、“零一十”);
,——将数字拆分为整数与浮点数两个数字数组
,我:=INSTR (str,‘点’,1);

,如果我=0
,,,integer_part:=SUBSTR (str, 1);
,其他
,,,integer_part:=SUBSTR (str, 1 - 1),
,,,float_part ,:=SUBSTR (str,我+ 1);
,如果结束,

,——整型部分
,x ,,:=长度(integer_part);
,str :=";
,tmp :=0;
,tmp2:=0;

,对k 1 . .x循环
,,,str:=SUBSTR (integer_part k 1);
,
,,,如果str(“万”、“亿”、“兆”)然后
,,,,,——当碰到万亿兆时
,,,,,tmp ,,,,,,,:=tmp + tmp2;
,,,,,returnvalue:=returnvalue + tmp *功率(10000年,wanyizhao_map (str));
,,,,,tmp ,,,,,,,:=0;
,,,,,tmp2 ,,,,,,:=0;
,,,ELSIF str(“十”、“百”、“千”)然后
,,,,,——当碰到十百千时
,,,,,tmp :=tmp + tmp2 *功率(10,shibaiqian_map (str));
,,,,,tmp2:=0;
,,,其他
,,,,,——当碰到数字时
,,,,,tmp2:=ling_jiu_map (str);
,,,如果结束,
,结束循环;

,——最后将没有小于万位数加到整数中去
,tmp ,,,,,,,:=tmp + tmp2;
,returnvalue:=returnvalue + tmp;

,如果没有空float_part然后
,,,——计算小数部分
,,,k ,:=0;
,,,tmp:=";
,
,,,对k 1 . .长度(float_part)循环
,,,,,tmp:=tmp | | ling_jiu_map (SUBSTR (float_part k 1));
,,,
结束循环;
,,,returnvalue:=returnvalue | |”。“| | tmp;
,如果结束,

,返回returnvalue;
结束;

凹坠俏闹形氖肿⒗?

甲骨文中文数字转阿拉伯数字