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

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

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

    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

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

    常用的存储过程--阿拉伯数字转大写中文

    本篇主要介绍一些常用的存储过程及其应用场景,包括分页查找数据、用户注册以及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 数字金额转为汉字大写

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

    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转换成伍拾柒元玖角贰分整

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

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

Global site tag (gtag.js) - Google Analytics