`

ORACLE小写金额转大写金额

 
阅读更多
ORACLE小写金额转大写金额
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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 Then
    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) := '玖';
  tabUnitMapping(-2) := '分';
  tabUnitMapping(-1) := '角';
  tabUnitMapping(1) := '';
  tabUnitMapping(2) := '拾';
  tabUnitMapping(3) := '佰';
  tabUnitMapping(4) := '仟';
  tabUnitMapping(5) := '万';
  tabUnitMapping(6) := '拾';
  tabUnitMapping(7) := '佰';
  tabUnitMapping(8) := '仟';
  tabUnitMapping(9) := '亿';
  For i In 1 .. numLenYuan Loop
    j            := numLenYuan - i + 1;
    numUnitIndex := Mod(i, 8);
    If numUnitIndex = 0 Then
      numUnitIndex := 8;
    End If;
    If numUnitIndex = 1 And i > 1 Then
      strRstYuan := tabUnitMapping(9) || strRstYuan;
    End If;
    charCurrentNum := substr(strYuan, j, 1);
    If charCurrentNum <> 0 Then
      strRstYuan := tabNumMapping(charCurrentNum) ||
                    tabUnitMapping(numUnitIndex) || strRstYuan;
    Else
      If (i = 1 Or i = 5) Then
        If substr(strYuan, j - 3, 4) <> '0000' Then
          strRstYuan := tabUnitMapping(numUnitIndex) || strRstYuan;
        End If;
      Else
        If substr(strYuan, j + 1, 1) <> '0' Then
          strRstYuan := tabNumMapping(charCurrentNum) || strRstYuan;
        End If;
      End If;
    End If;
  End Loop;
  For i In -2 .. -1 Loop
    j              := numLenYuan - i;
    charCurrentNum := substr(strYuanFen, j, 1);
    If charCurrentNum <> '0' Then
      strRstFen := tabNumMapping(charCurrentNum) || tabUnitMapping(i) ||
                   strRstFen;
    End If;
  End Loop;
  If strRstYuan Is Not Null Then
    strRstYuan := strRstYuan || '圆';
  End If;
  If strRstFen Is Null Then
    strRstYuan := strRstYuan || '整';
  Elsif length(strRstFen) = 2 And substr(strRstFen, 2) = '角' Then
    strRstFen := strRstFen || '整';
  End If;
  strRst := strRstYuan || strRstFen;
  --strRst := Replace(strRst, '亿零', '亿');
  --strRst := Replace(strRst, '万零', '万');
  Return strRst;
End Money2Chinese;

 

 
测试SQL如下:
 
1
Select Money2Chinese(0932402934024.213) From dual;

 

 
结果:
 
玖仟叁佰贰拾肆亿零贰佰玖拾叁万肆仟零贰拾肆圆贰角壹分
 
测试通过
分享到:
评论

相关推荐

    oracle中将小写金额转换为大写金额函数

    ### Oracle中将小写金额转换为大写金额的函数实现 在Oracle数据库中,有时我们需要将数字金额转换成中文大写形式,特别是在财务系统中,这样的功能非常实用且常见。本文将详细介绍一个自定义的Oracle函数`money_to_...

    Oracle中金额大小写转换

    在Oracle数据库中,进行金额数字到大写汉字的转换是一个常见的需求,特别是在处理财务数据时。Oracle提供了一些内置函数和自定义方法来实现这个功能。本文将深入探讨如何在Oracle中进行这种转换,并以PSQL...

    金额小写转大写_sql函数.rar

    "金额小写转大写_sql函数"的主题聚焦于如何在SQL(结构化查询语言)中将货币数值从小写形式转换为符合中国会计规范的大写形式。在财务报告和正式文档中,通常要求金额以大写汉字表示,以防止篡改和增加审计安全性。 ...

    oracle小写人名币转大写人名币函数

    根据提供的文件信息,可以看出这是一个Oracle数据库中的自定义函数,用于将数字表示的小写人民币金额转换为汉字大写形式。此函数对于财务系统、银行系统等需要处理人民币金额大写显示的应用场景非常有用。 ### 函数...

    oracle存储过程--数字大写变小写

    oracle存储过程--数字大写变小写,使用存储过程将数字的大写转成小写,在程序中可以直接调用

    oracle姓名中文转全拼函数

    Oracle姓名中文转全拼函数是解决在Oracle数据库中处理中文姓名时的一个常见需求,特别是考虑到汉字的多样性和复杂性,包括生僻字和多音字的处理。此函数旨在将中文姓名转换为全拼,方便进一步的数据处理或搜索。下面...

    oracle汉字转拼音函数整理大全

    ### Oracle汉字转拼音函数知识点详解 #### 一、概述 在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_...

    Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)

    查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号; 表名同理,我这里表名是大写,暂时不需要改。 搜到一个批量修改字段名为大写的存储过程,如下: 登陆到要修改的用户下, 执行: begin for ...

    人民币大小写转换,人民币大小写转换

    人民币小写转大写 人民币小写转大写 人民币小写转大写 人民币小写转大写

    ORACLE中数据字典大小写问题

    2. **避免使用大小写混合:** 为了避免混淆,建议创建表名和字段名时使用全大写或全小写,并始终使用双引号引用。 3. **利用Oracle自动转换特性:** 如果创建表或字段时未使用双引号,Oracle会将名称自动转换为大写并...

    阿拉伯数字转换为中文小写数字

    此外,考虑到本地化的需求,我们还可以考虑提供中文大写数字的转换,以满足不同的应用场景。 总的来说,阿拉伯数字到中文小写数字的转换是Android应用本地化的一个重要环节,通过合理的字符映射和逻辑判断,我们...

    Oracle汉字转拼音

    Oracle汉字转拼音,支持转成大写或小写

    如何:让Oracle表及字段显示为区分大小写

    当没有使用双引号来定义标识符时,Oracle默认将这些标识符转换为大写,并存储为大写形式。然而,通过使用双引号(`"`),可以明确地告诉Oracle保持标识符的原始大小写状态。 **Oracle内部表存储原理** Oracle...

    Oracle 常用函数练习含答案

    - **说明**:这里使用了`lower`和`upper`函数分别将员工名字转换为小写和大写,然后使用`LIKE`关键字配合通配符`%a%`和`%A%`来匹配含有字母A的员工姓名。 #### 九、查询部门编号为10或20,入职日期在81年5月1日之后...

    oracle 类型转换函数

    1. **LOWER**: 将字符串转换为小写。例如,`LOWER('SQLCourse')`返回`sqlcourse`。 示例:`SELECT LOWER('SQLCourse') FROM dual;` 2. **UPPER**: 将字符串转换为大写。例如,`UPPER('SQLCourse')`返回`...

    Oracle 大小写转换函数实例详解

    除了这两个基础的转换函数外,Oracle还提供了其他函数来处理大小写,例如 `INITCAP(str)`,它将每个单词的第一个字母转换为大写,其余字母转换为小写。但这里我们主要关注`UPPER`和`LOWER`。 接下来,我们探讨如何...

    oracle汉字转拼音的函数

    汉字转拼音的函数,通过不加参数或者加参数1、2、3、4可实现全拼小写、全拼大写、全拼首字母大写、首拼小写、首拼大写

    Oracle中对像名大小写敏感性的深入解析

    Oracle数据库在默认情况下被广泛认为对对象名大小写不敏感,这是因为Oracle会自动将所有未引号标识的小写字母转换为大写。然而,Oracle实际上有一套复杂的规则来处理对象名的大小写敏感性,这在某些特定情况下可能会...

    ORACLE常用数值函数、转换函数

    LOWER (转小写) `LOWER(c)` 函数将字符 `c` 转换为小写字母,支持 `CHAR`, `VARCHAR2`, `NCHAR`, `NVARCHAR2`, `CLOB`, `NCLOB` 类型的字符。 **示例**: ```sql SELECT LOWER('WhaTistHis') FROM DUAL; -- 返回 ...

Global site tag (gtag.js) - Google Analytics