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....
本文旨在探讨在 SQL Server 数据库环境中使用用户自定义存储过程实现小写数字金额转换成大写数字金额的设计思想,并结合源代码阐述实现方法及关键技术。 1. 设计思想 通过使用 SQL Server 数据库管理系统内置的...
阿拉伯数字转换成中文数字, 例如: 10转换成十,111转换成一百一十一 最高支持的数字单位亿, 再大的话可能需要自己修改
sqlserver数字转金额大写,输入数字返回汉字大写
### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...
mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。
其中,`<ServerName>`是SQL Server实例的名称,`<DatabaseName>`是你要操作的数据库,`<Username>`和`<Password>`是连接数据库所需的凭据,`<SchemaName>`是存储过程所在的架构,`<StoredProcedureName>`是存储过程...
该函数用于将金额转成汉字大写,例如57.91500转换成伍拾柒元玖角贰分整
### 关于《Inside Microsoft SQL Server 2008 T-SQL Programming》的知识点解析 #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项...
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</...
Sqlserver金额大写函数,思路清晰、代码简单。可用于SqlServer各版本中。
<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) 得到 贰万亿零贰拾万元零肆分
---数字转换汉字----RR--------------------- ALTER FUNCTION numToChinese(@str varchar(20)) RETURNS VARCHAR(20) AS BEGIN declare @i int, @n_str varchar(1),@data varchar(20)
总的来说,SQL中将日期转换为中文大写涉及到对日期的理解、字符串操作和可能的自定义函数或存储过程开发。无论选择哪种方法,都需要对SQL有深入的理解,并熟悉所使用的数据库系统。在实践中,我们应根据项目需求、...
本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...