CREATE PROCEDURE dbo.L2U
(
@n_LowerMoney numeric(15,2),
@v_TransType int,
@RET VARCHAR(200) output
)
AS
Declare @v_LowerStr VARCHAR(200) -- 小写金额
Declare @v_UpperPart VARCHAR(200)
Declare @v_UpperStr VARCHAR(200) -- 大写金额
Declare @i_I int
set nocount on
select @v_LowerStr = LTRIM(RTRIM(STR(@n_LowerMoney,20,2))) --四舍五入为指定的精度并删除数据左右空格
select @i_I = 1
select @v_UpperStr = ' '
while ( @i_I <= len(@v_LowerStr))
begin
select @v_UpperPart = case substring(@v_LowerStr,len(@v_LowerStr) - @i_I + 1,1)
WHEN '. ' THEN '元 '
WHEN '0 ' THEN '零 '
WHEN '1 ' THEN '壹 '
WHEN '2 ' THEN '贰 '
WHEN '3 ' THEN '叁 '
WHEN '4 ' THEN '肆 '
WHEN '5 ' THEN '伍 '
WHEN '6 ' THEN '陆 '
WHEN '7 ' THEN '柒 '
WHEN '8 ' THEN '捌 '
WHEN '9 ' THEN '玖 '
END
+
case @i_I
WHEN 1 THEN '分 '
WHEN 2 THEN '角 '
WHEN 3 THEN ' '
WHEN 4 THEN ' '
WHEN 5 THEN '拾 '
WHEN 6 THEN '佰 '
WHEN 7 THEN '仟 '
WHEN 8 THEN '万 '
WHEN 9 THEN '拾 '
WHEN 10 THEN '佰 '
WHEN 11 THEN '仟 '
WHEN 12 THEN '亿 '
WHEN 13 THEN '拾 '
WHEN 14 THEN '佰 '
WHEN 15 THEN '仟 '
WHEN 16 THEN '万 '
ELSE ' '
END
select @v_UpperStr = @v_UpperPart + @v_UpperStr
select @i_I = @i_I + 1
end
--------print '//v_UpperStr = '+@v_UpperStr + '// '
if ( @v_TransType=0 )
begin
select @v_UpperStr = REPLACE(@v_UpperStr, '零拾 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零佰 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零仟 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零零零 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零零 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零角零分 ', '整 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零分 ', '整 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零角 ', '零 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零亿零万零元 ', '亿元 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '亿零万零元 ', '亿元 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零亿零万 ', '亿 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零万零元 ', '万元 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '万零元 ', '万元 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零亿 ', '亿 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零万 ', '万 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零元 ', '元 ')
select @v_UpperStr = REPLACE(@v_UpperStr, '零零 ', '零 ')
end
-- 对壹元以下的金额的处理
if ( substring(@v_UpperStr,1,1)= '元 ' )
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)= '零 ')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)= '角 ')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if ( substring(@v_UpperStr,1,1)= '分 ')
begin
select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))
end
if (substring(@v_UpperStr,1,1)= '整 ')
begin
select @v_UpperStr = '零元整 '
end
select @ret=@v_UpperStr
GO
调用过程:
declare @ret varchar(200)
exec L2U 567983.897,1,@ret output
select @ret
分享到:
相关推荐
SQL Server 阿拉伯数字转大写中文存储过程 SQL Server 是一个功能强大且广泛应用的关系数据库管理系统,而阿拉伯数字转大写中文是一个常见的需求,例如,在财务报表、发票printing等应用场景中,需要将阿拉伯数字...
Beginning Transact-SQL with SQL Server 2000 and 2005 <br>byPaul TurleyandDan Wood <br>Wrox Press 2006 (594 pages) <br>ISBN:076457955X <br>Prepare for the ever-increasing demands of programming....
在IT行业中,尤其是在财务软件开发或者银行系统设计中,经常需要将阿拉伯数字金额转换成大写数字金额,以便于核对、防止错误和提高安全性。这是因为大写数字在视觉上与阿拉伯数字有所区别,可以降低欺诈风险。本例子...
Beginning Transact-SQL with SQL Server 2000 and 2005 <br>byPaul TurleyandDan Wood <br>Wrox Press 2006 (594 pages) <br>ISBN:076457955X <br>Prepare for the ever-increasing demands of programming....
本文旨在探讨在 SQL Server 数据库环境中使用用户自定义存储过程实现小写数字金额转换成大写数字金额的设计思想,并结合源代码阐述实现方法及关键技术。 1. 设计思想 通过使用 SQL Server 数据库管理系统内置的...
Beginning Transact-SQL with SQL Server 2000 and 2005 <br>byPaul TurleyandDan Wood <br>Wrox Press 2006 (594 pages) <br>ISBN:076457955X <br>Prepare for the ever-increasing demands of programming....
阿拉伯数字转换成中文数字, 例如: 10转换成十,111转换成一百一十一 最高支持的数字单位亿, 再大的话可能需要自己修改
本篇主要介绍一些常用的存储过程及其应用场景,包括分页查找数据、用户注册以及SQL Server的系统存储过程。 首先,分页查找数据是数据库操作中常见的需求,特别是在大数据量的展示时。以下是一个名为`[dbo]....
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map<String, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map<String, Object>...
在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。
其中,`<ServerName>`是SQL Server实例的名称,`<DatabaseName>`是你要操作的数据库,`<Username>`和`<Password>`是连接数据库所需的凭据,`<SchemaName>`是存储过程所在的架构,`<StoredProcedureName>`是存储过程...
该函数用于将金额转成汉字大写,例如57.91500转换成伍拾柒元玖角贰分整
SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...
### SQL Server 存储过程详解 #### 引言与概念 存储过程,作为数据库管理系统中的重要组成部分,尤其在SQL Server中扮演着核心角色。它是一种预编译的SQL语句集合,存储在数据库中,可以接受输入参数,执行一系列...
<artifactId>sqljdbc4</artifactId> <scope>4.0</scope> <version>4.0</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</...
<artifactId>sqljdbc4</artifactId> <scope>4.0</scope> <version>4.0</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</...
<artifactId>sqljdbc4</artifactId> <scope>4.0</scope> <version>4.0</version> </dependency> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</...