`
caleb_520
  • 浏览: 250437 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

SQL Server 存储过程-阿拉伯数字转换成中文大写金额<转>

阅读更多
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 阿拉伯数字转大写中文存储过程 SQL Server 是一个功能强大且广泛应用的关系数据库管理系统,而阿拉伯数字转大写中文是一个常见的需求,例如,在财务报表、发票printing等应用场景中,需要将阿拉伯数字...

    Beginning Transact-SQL with SQL Server 2000 and 2005 (4 of 5)

    Beginning Transact-SQL with SQL Server 2000 and 2005 &lt;br&gt;byPaul TurleyandDan Wood &lt;br&gt;Wrox Press 2006 (594 pages) &lt;br&gt;ISBN:076457955X &lt;br&gt;Prepare for the ever-increasing demands of programming....

    用SQL Server存储过程实现小写金额转换大写金额.pdf

    本文旨在探讨在 SQL Server 数据库环境中使用用户自定义存储过程实现小写数字金额转换成大写数字金额的设计思想,并结合源代码阐述实现方法及关键技术。 1. 设计思想 通过使用 SQL Server 数据库管理系统内置的...

    阿拉伯数字转换成中文.sql

    阿拉伯数字转换成中文数字, 例如: 10转换成十,111转换成一百一十一 最高支持的数字单位亿, 再大的话可能需要自己修改

    SQL数字转金额大写函数

    sqlserver数字转金额大写,输入数字返回汉字大写

    oracle到sqlserver存储过程语法转换

    ### Oracle到SQL Server存储过程语法转换详解 在数据库迁移项目中,从Oracle迁移到SQL Server是一种常见的场景。本文旨在提供一份详细的指南,帮助开发者更好地理解这两种数据库系统在存储过程方面的语法差异,并...

    mysql 函数,可以将数字转换为中文大写形式

    mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

    bat+sqlcmd 通过参数形式调用任意存储过程的办法

    其中,`&lt;ServerName&gt;`是SQL Server实例的名称,`&lt;DatabaseName&gt;`是你要操作的数据库,`&lt;Username&gt;`和`&lt;Password&gt;`是连接数据库所需的凭据,`&lt;SchemaName&gt;`是存储过程所在的架构,`&lt;StoredProcedureName&gt;`是存储过程...

    sqlserver金额转大写汉字的函数

    该函数用于将金额转成汉字大写,例如57.91500转换成伍拾柒元玖角贰分整

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    ### 关于《Inside Microsoft SQL Server 2008 T-SQL Programming》的知识点解析 #### 一、SQL Server 2008概述 《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入地介绍了SQL Server 2008的各项...

    SqlServer存储过程及调试指南

    SqlServer存储过程及调试指南的知识点如下: 1. 存储过程概念:存储过程是一组为完成特定功能的SQL语句集,这些语句经过编译后存储在数据库中,供用户通过指定存储过程名和参数(如有)来执行。存储过程被称作...

    SQLServer储存过程-130808

    ### SQL Server 存储过程详解 #### 引言与概念 存储过程,作为数据库管理系统中的重要组成部分,尤其在SQL Server中扮演着核心角色。它是一种预编译的SQL语句集合,存储在数据库中,可以接受输入参数,执行一系列...

    基于springboot的驾校管理系统的设计与实现

    &lt;artifactId&gt;sqljdbc4&lt;/artifactId&gt; &lt;scope&gt;4.0&lt;/scope&gt; &lt;version&gt;4.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.microsoft.sqlserver&lt;/groupId&gt; &lt;artifactId&gt;mssql-jdbc&lt;/...

    Sqlserver金额转大写函数

    Sqlserver金额大写函数,思路清晰、代码简单。可用于SqlServer各版本中。

    基于springboot的校园在线拍卖系统的设计与实现

    &lt;artifactId&gt;sqljdbc4&lt;/artifactId&gt; &lt;scope&gt;4.0&lt;/scope&gt; &lt;version&gt;4.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;com.microsoft.sqlserver&lt;/groupId&gt; &lt;artifactId&gt;mssql-jdbc&lt;/...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的SQL Server系统中,用于数据查询、更新、插入和删除,以及复杂的存储过程和触发器的编写。 在SQL Server 2008版本中,T-SQL得到了许多增强和改进,这本书将...

    SQL Server中人民币大写金额函数

    在SQL Server中用函数把数字金额转换成大写金额 最大转换金额为5万亿 如 select DBO.ChineseJe(2000000200000.04) 得到 贰万亿零贰拾万元零肆分

    sql 数字转换汉字fuction

    ---数字转换汉字----RR--------------------- ALTER FUNCTION numToChinese(@str varchar(20)) RETURNS VARCHAR(20) AS BEGIN declare @i int, @n_str varchar(1),@data varchar(20)

    SQL中将日期转换为中文大写

    总的来说,SQL中将日期转换为中文大写涉及到对日期的理解、字符串操作和可能的自定义函数或存储过程开发。无论选择哪种方法,都需要对SQL有深入的理解,并熟悉所使用的数据库系统。在实践中,我们应根据项目需求、...

    sql server 2012 T-SQl基础教程 源码和示例数据库

    本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...

Global site tag (gtag.js) - Google Analytics