ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 4461|回复: 5

[SQL] oracle 大写金额转换成小写的方法

[复制链接]
论坛徽章:
0
发表于 2017-8-4 10:44 | 显示全部楼层 |阅读模式
查了半天都是小写转大写 ,求一个大写转小写的。。。
求职 : 数据库开发
论坛徽章:
16
优秀写手
日期:2014-02-27 06:00:13弗兰奇
日期:2017-07-04 09:16:01秀才
日期:2017-06-29 10:16:48乌索普
日期:2017-05-26 08:58:24娜美
日期:2017-05-18 16:07:23ITPUB15周年纪念
日期:2017-05-02 15:22:36妮可·罗宾
日期:2017-04-06 10:06:19处女座
日期:2016-03-10 09:03:26白羊座
日期:2015-10-09 16:42:50慢羊羊
日期:2015-06-15 21:49:18
发表于 2017-8-4 15:43 | 显示全部楼层
贰仟贰佰壹拾叁圆肆角壹分 这种的? 自己写一个function实现吧

使用道具 举报

回复
论坛徽章:
0
发表于 2017-8-16 09:36 | 显示全部楼层
查了半天都是小写转大写,,,反过来就行了

使用道具 举报

回复
论坛徽章:
394
阿斯顿马丁
日期:2014-01-03 13:53:522014年世界杯参赛球队:喀麦隆
日期:2014-07-11 12:10:53马上有对象
日期:2014-04-09 16:19:542014年世界杯参赛球队: 洪都拉斯
日期:2014-06-25 08:25:55itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07
发表于 2017-8-16 14:12 | 显示全部楼层
英文好像也不能把one two 转成 1 2

使用道具 举报

回复
论坛徽章:
0
发表于 2017-10-9 13:41 | 显示全部楼层
mark下,看看到底怎么实现的

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
16
优秀写手
日期:2014-02-27 06:00:13弗兰奇
日期:2017-07-04 09:16:01秀才
日期:2017-06-29 10:16:48乌索普
日期:2017-05-26 08:58:24娜美
日期:2017-05-18 16:07:23ITPUB15周年纪念
日期:2017-05-02 15:22:36妮可·罗宾
日期:2017-04-06 10:06:19处女座
日期:2016-03-10 09:03:26白羊座
日期:2015-10-09 16:42:50慢羊羊
日期:2015-06-15 21:49:18
发表于 2017-10-10 09:58 | 显示全部楼层
  1. DECLARE
  2.   S  VARCHAR2(100) := '贰仟贰佰壹拾叁圆肆角壹分';
  3.   S1 VARCHAR2(10);
  4.   V  NUMBER;
  5.   V1 NUMBER;
  6.   R  NUMBER := 0;
  7.   TYPE VARRAY_TYPE IS VARRAY(10) OF VARCHAR2(10);
  8.   VAR1 VARRAY_TYPE := VARRAY_TYPE('壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
  9.   VAR2 VARRAY_TYPE := VARRAY_TYPE('拾', '佰', '仟', '万', '亿', '圆', '角', '分');
  10.   FUNCTION INDEXOF
  11.   (
  12.     F_VAR_VALUE IN VARCHAR2,
  13.     V           IN VARRAY_TYPE
  14.   ) RETURN NUMBER IS
  15.   BEGIN
  16.     FOR I IN 1 .. V.COUNT LOOP
  17.       IF V(I) = F_VAR_VALUE THEN
  18.         RETURN I;
  19.       END IF;
  20.     END LOOP;
  21.     RETURN 0;
  22.   END;
  23. BEGIN
  24.   FOR I IN 1 .. LENGTH(S) LOOP
  25.     S1 := SUBSTR(S, -I, 1);
  26.     V  := INDEXOF(S1, VAR2);
  27.     IF V > 0 THEN
  28.       SELECT POWER(10, DECODE(V, 5, 8, 6, 0, 7, -1, 8, -2, V))
  29.       INTO   V1
  30.       FROM   DUAL;
  31.     END IF;
  32.     V := INDEXOF(S1, VAR1);
  33.     IF V > 0 THEN
  34.       R := R + V * V1;
  35.     END IF;
  36.   END LOOP;
  37.   DBMS_OUTPUT.PUT_LINE(R);
  38. END;
复制代码

有闲写了一个

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表