`
caleb_520
  • 浏览: 250823 次
  • 性别: 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....

    阿拉伯数字金额转换为大写数字金额

    在IT行业中,尤其是在财务软件开发或者银行系统设计中,经常需要将阿拉伯数字金额转换成大写数字金额,以便于核对、防止错误和提高安全性。这是因为大写数字在视觉上与阿拉伯数字有所区别,可以降低欺诈风险。本例子...

    Beginning Transact-SQL with SQL Server 2000 and 2005 (3 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....

    Beginning Transact-SQL with SQL Server 2000 and 2005 (5 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的系统存储过程。 首先,分页查找数据是数据库操作中常见的需求,特别是在大数据量的展示时。以下是一个名为`[dbo]....

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List&lt;Map&lt;String, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List&lt;Map&lt;String, Object&gt;...

    oracle到sqlserver存储过程语法转换

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

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

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

    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的各项...

    oracle 数字金额转为汉字大写

    在Oracle数据库环境中,有时我们需要将数字金额转换成汉字大写形式,这在财务报表或理财程序中尤为常见,因为汉字大写是财务领域的一种标准表示方式,可以避免因数字混淆而引发的错误。本篇文章将深入探讨如何在...

    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;/...

    基于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;/...

    基于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中将日期转换为中文大写

    总的来说,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