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....
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的系统存储过程。 首先,分页查找数据是数据库操作中常见的需求,特别是在大数据量的展示时。以下是一个名为`[dbo]....
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List<Map<String, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List<Map<String, Object>...
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。
该函数用于将金额转成汉字大写,例如57.91500转换成伍拾柒元玖角贰分整
### 关于《Inside Microsoft SQL Server 2008 T-SQL Programming》的知识点解析 #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项...
在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...
### 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</...
T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的SQL Server系统中,用于数据查询、更新、插入和删除,以及复杂的存储过程和触发器的编写。 在SQL Server 2008版本中,T-SQL得到了许多增强和改进,这本书将...
在SQL Server中用函数把数字金额转换成大写金额 最大转换金额为5万亿 如 select DBO.ChineseJe(2000000200000.04) 得到 贰万亿零贰拾万元零肆分
总的来说,SQL中将日期转换为中文大写涉及到对日期的理解、字符串操作和可能的自定义函数或存储过程开发。无论选择哪种方法,都需要对SQL有深入的理解,并熟悉所使用的数据库系统。在实践中,我们应根据项目需求、...
本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...