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函数`money_to_...
在Oracle数据库中,进行金额数字到大写汉字的转换是一个常见的需求,特别是在处理财务数据时。Oracle提供了一些内置函数和自定义方法来实现这个功能。本文将深入探讨如何在Oracle中进行这种转换,并以PSQL...
"金额小写转大写_sql函数"的主题聚焦于如何在SQL(结构化查询语言)中将货币数值从小写形式转换为符合中国会计规范的大写形式。在财务报告和正式文档中,通常要求金额以大写汉字表示,以防止篡改和增加审计安全性。 ...
根据提供的文件信息,可以看出这是一个Oracle数据库中的自定义函数,用于将数字表示的小写人民币金额转换为汉字大写形式。此函数对于财务系统、银行系统等需要处理人民币金额大写显示的应用场景非常有用。 ### 函数...
oracle存储过程--数字大写变小写,使用存储过程将数字的大写转成小写,在程序中可以直接调用
Oracle姓名中文转全拼函数是解决在Oracle数据库中处理中文姓名时的一个常见需求,特别是考虑到汉字的多样性和复杂性,包括生僻字和多音字的处理。此函数旨在将中文姓名转换为全拼,方便进一步的数据处理或搜索。下面...
### Oracle汉字转拼音函数知识点详解 #### 一、概述 在Oracle数据库中,有时需要将汉字转换成拼音,尤其是在处理中文数据时。本篇文档详细介绍了两种用于转换汉字到拼音的自定义函数:`fn_getpyKGJG` 和 `fn_...
查询后得知,数据库表字段为小写时,查询需要将字段名小写并加上双引号; 表名同理,我这里表名是大写,暂时不需要改。 搜到一个批量修改字段名为大写的存储过程,如下: 登陆到要修改的用户下, 执行: begin for ...
人民币小写转大写 人民币小写转大写 人民币小写转大写 人民币小写转大写
2. **避免使用大小写混合:** 为了避免混淆,建议创建表名和字段名时使用全大写或全小写,并始终使用双引号引用。 3. **利用Oracle自动转换特性:** 如果创建表或字段时未使用双引号,Oracle会将名称自动转换为大写并...
此外,考虑到本地化的需求,我们还可以考虑提供中文大写数字的转换,以满足不同的应用场景。 总的来说,阿拉伯数字到中文小写数字的转换是Android应用本地化的一个重要环节,通过合理的字符映射和逻辑判断,我们...
Oracle汉字转拼音,支持转成大写或小写
当没有使用双引号来定义标识符时,Oracle默认将这些标识符转换为大写,并存储为大写形式。然而,通过使用双引号(`"`),可以明确地告诉Oracle保持标识符的原始大小写状态。 **Oracle内部表存储原理** Oracle...
- **说明**:这里使用了`lower`和`upper`函数分别将员工名字转换为小写和大写,然后使用`LIKE`关键字配合通配符`%a%`和`%A%`来匹配含有字母A的员工姓名。 #### 九、查询部门编号为10或20,入职日期在81年5月1日之后...
1. **LOWER**: 将字符串转换为小写。例如,`LOWER('SQLCourse')`返回`sqlcourse`。 示例:`SELECT LOWER('SQLCourse') FROM dual;` 2. **UPPER**: 将字符串转换为大写。例如,`UPPER('SQLCourse')`返回`...
除了这两个基础的转换函数外,Oracle还提供了其他函数来处理大小写,例如 `INITCAP(str)`,它将每个单词的第一个字母转换为大写,其余字母转换为小写。但这里我们主要关注`UPPER`和`LOWER`。 接下来,我们探讨如何...
汉字转拼音的函数,通过不加参数或者加参数1、2、3、4可实现全拼小写、全拼大写、全拼首字母大写、首拼小写、首拼大写
Oracle数据库在默认情况下被广泛认为对对象名大小写不敏感,这是因为Oracle会自动将所有未引号标识的小写字母转换为大写。然而,Oracle实际上有一套复杂的规则来处理对象名的大小写敏感性,这在某些特定情况下可能会...
LOWER (转小写) `LOWER(c)` 函数将字符 `c` 转换为小写字母,支持 `CHAR`, `VARCHAR2`, `NCHAR`, `NVARCHAR2`, `CLOB`, `NCLOB` 类型的字符。 **示例**: ```sql SELECT LOWER('WhaTistHis') FROM DUAL; -- 返回 ...