将汉字转为阿拉伯数字(oracle函数方式)
之前因公司业务需求,需要将录入的汉字自动转为阿拉伯数字存放到数据库中,网上有好多阿拉伯数字转为汉字的且正确的。但是汉字转为阿拉伯数字的却很少有正确的 。下面是正确的oracle函数,可正确转换汉字。(可转14位数左右,更大的数转换会有问题。)
create or replace function chineseTonum (chival IN VARCHAR2) return number
astype str_array is table of varchar2(10) index by binary_integer;
type num_array is table of number index by binary_integer;
type num_map is table of number index by varchar2(10);
rmb_numbers num_map;
unit_numbers str_array;
big_unit_numbers str_array;
unit_val_numbers num_array;
result Number :=0;
i integer;
ind integer := -1;
money VARCHAR2(200) ;
pre_money VARCHAR2(200) ;
n Number;
beginrmb_numbers('一') := 1;rmb_numbers('二') := 2;rmb_numbers('三') := 3;rmb_numbers('四') := 4;rmb_numbers('五') := 5;rmb_numbers('六') := 6;rmb_numbers('七') := 7;rmb_numbers('八') := 8;rmb_numbers('九') := 9;rmb_numbers('零') := 0;rmb_numbers('壹') := 1;rmb_numbers('贰') := 2;rmb_numbers('叁') := 3;rmb_numbers('肆') := 4;rmb_numbers('伍') := 5;rmb_numbers('陆') := 6;rmb_numbers('柒') := 7;rmb_numbers('捌') := 8;rmb_numbers('玖') := 9;rmb_numbers('整') := 0;unit_numbers(1) := '亿';unit_numbers(2) := '万';unit_numbers(3) := '千';unit_numbers(4) := '百';unit_numbers(5) := '十';unit_numbers(6) := '元';unit_numbers(7) := '角';unit_numbers(8) := '分';unit_numbers(9) := '厘';big_unit_numbers(1) := '億';big_unit_numbers(2) := '萬';big_unit_numbers(3) := '仟';big_unit_numbers(4) := '佰';big_unit_numbers(5) := '拾';big_unit_numbers(6) := '圆';big_unit_numbers(7) := '角';big_unit_numbers(8) := '分';big_unit_numbers(9) := '厘';unit_val_numbers(1) := 100000000; unit_val_numbers(2) := 10000; unit_val_numbers(3) := 1000; unit_val_numbers(4) := 100; unit_val_numbers(5) := 10; unit_val_numbers(6) := 1; unit_val_numbers(7) := 0.1; unit_val_numbers(8) := 0.01; unit_val_numbers(9) := 0.001; money:= chival;if (money is null ) thenreturn result;end if;-- 9 是计量单位的长度for i in 1..unit_numbers.count loopind := instr(money, unit_numbers(i), -1 , 1);if ( ind = 0 ) then ind := instr(money, big_unit_numbers(i), -1 , 1);end if;if ( ind > 0 ) thenpre_money := substr(money,1,ind -1); money := substr(money,ind + 1);if ( pre_money is null and unit_val_numbers(i) = 10 ) thenresult := result + unit_val_numbers(i);elseresult := result + chi2num(pre_money) * unit_val_numbers(i); end if;end if;end loop;if (money is not null ) then n := rmb_numbers(money);if ( n is not null) then result := result + n;end if;end if;return result;
end;
将汉字转为阿拉伯数字(oracle函数方式)相关推荐
- 大写汉字转为阿拉伯数字
/*** 大写汉字转为阿拉伯数字*/ public class ChineseChangeToNumber {/*** 中文简体*/public static final String[] RMB_N ...
- oracle数据库生成拼音码,Oracle中生成汉字拼音码的函数(转载)
效果: select fgetpy('中国') FROM dual; 结果 zg CREATE OR REPLACE FUNCTION fgetpy (v_str VARCHAR2) RETURN ...
- python判断输入的是否为数字_python怎么判断是否为数字 将罗马数字转为阿拉伯数字,用python解...
将阿拉伯数字转为罗马数字,用python解 class Solution(object): def intToRoman(self, num): """ :type nu ...
- oracle tochar 格式 ¥,ORACLE函数TO_CHAR以及数字转换格式
ORACLE函数TO_CHAR以及数字转换格式 数点,则要和D配合使用,不能和点号配合. 11 L(本地货币符号) 'L999' 是C的本地版本.可以放在整个格式的最前面和最后面. TO_CHAR(1 ...
- Oracle函数介绍:decode
1.Oracle函数介绍:decode Sql代码 select sum(DECODE(C810000125,'是',1,0))/COUNT(1) 合格率 FROM t581 统计合格率,如果 ...
- oracle函数建立码值,Oracle函数与存储过程
1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 D ...
- 【实例】PHP如何实现汉字转为拼音的?
php汉字转拼音本次使用的是 overtrue/pinyin 扩展.基于 CC-CEDICT 词典的中文转拼音工具,更准确的支持多音字的汉字转拼音解决方案. 一.安装 1.使用 Composer 安装 ...
- 中文汉字转阿拉伯数字
1.中文汉字转阿拉伯数字 参考 思路:地位向高位遍历,每遇到一个数,乘以当前单位,累加在 res 上,遇到单位则改变当前单位 //可以处理十万以下 public class change {publi ...
- oracle创建编号函数,oracle函数初次尝试
初次着手写function,确实费了好长时间,一个if就需要有个end if ,并且else必须和if一起使用,可以直接对传进来的参数使用oracle自带的函数进行处理,并直接做做判断条件. 需求根 ...
最新文章
- usaco snail trails(dfs)
- 两栏布局,三栏布局,等高布局,流式布局
- 移动对meta的定义
- Android怎样保证一个线程最多仅仅能有一个Looper?
- [翻译] NSRegexTester
- Kotlin中的接口回调
- list 是什么意思 php,php中list的功能是什么
- java RPC 初步了解
- 五个 .NET 性能小贴士
- lts安装 rust ubuntu_一起学Rust编程「1」:开发环境
- 数据库工作笔记009---linux 导入导出postgresql数据库
- 如果你人生的第一目标是赚钱
- jlabel 不能连续两次set_请问一个JAVA中JLabel的setFont()问题?
- Tableau实战 楼市降温分析(七)现期房销售额及累计增长
- Aspnet Mvc 前后端分离项目手记(二)关于token认证
- C++ 惯用法之 Nifty Counter
- sql server XML中value(),exists(),nodes()方法
- 计算机ram和rom的特点的是,什么是ROM和RAM?它们各有什么特点?
- LeetCode 6036. 构造字符串的总得分和
- php bloginfo templatedirectory,lt;?phpbloginfo(#39;template_directory#39;);?这句标签什么意思?...
热门文章
- 向win7旗舰版U盘启动盘 添加usb3.0driver
- DWGTool Acme CAD Converter 2020中文版
- 配置 Nginx 和 frps 共存 80/443 端口及泛域名支持教程
- Python机器学习:train_test_split()划分数据集
- 计算机网络实验仿真系统设计,计算机网络安全实验仿真系统
- 计算机网络--自定向下方法(配套资源)
- 一招教你免费提取PDF中的文字
- win7需要计算机管理员权限,Win7系统提示“需要管理员权限”该如何解决?
- 一进入页面选中第一个按钮,并展示按钮下的数据
- xp使用4G内存方法