阿拉伯数字转大写中文_财务常用sql存储过程

 更新时间:2008年10月07日 23:22:44   作者:  
需求:输入阿拉伯数字,给出对应的中文大写,编写为存储过程或函数
例:输入12345,程序给出:壹万贰仟叁佰肆拾伍
例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾

解决方案之一(在SqlServer2000中测试通过):
CREATE FUNCTION fun_cgnum
(@num INT)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @temp INT,@res INT,@i TINYINT
DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16)
SELECT @str='',@no='另壹贰叁肆伍陆柒捌玖',@unit='拾佰仟万拾佰仟亿'
SET @temp=@num
SELECT @i=0,@res=@temp%10,@temp=@temp/10
WHILE @temp>0
BEGIN
IF @i=0
SET @str=SUBSTRING(@no,@res+1,1)
ELSE
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SELECT @res=@temp%10,@temp=@temp/10
SET @i=@i+1
END
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SET @str=REPLACE(@str,'另拾','另')
SET @str=REPLACE(@str,'另佰','另')
SET @str=REPLACE(@str,'另仟','另')
SET @str=REPLACE(@str,'另拾','另')
SET @str=REPLACE(@str,'另万','万')
WHILE @i>0
BEGIN
SET @str=REPLACE(@str,'另另','另')
SET @i=CHARINDEX('另另',@str)
END
SET @str=REPLACE(@str,'另万','万')
SET @str=REPLACE(@str,'亿万','亿')
IF RIGHT(@str,1)='另'
SET @str=LEFT(@str,LEN(@str)-1)
RETURN @str
END
GO

--测试:有0和没有0的情况
SELECT dbo.fun_cgnum(900000000),dbo.fun_cgnum(903002051),dbo.fun_cgnum(903002050)

PS:有兴趣的朋友可以继续考虑有小数点以及添加单位(元/角/分)的情况

相关文章

  • AspNetPager分页控件 存储过程

    AspNetPager分页控件 存储过程

    我用AspNetPager分页控件,写的存储过程
    2009-08-08
  • PLSQL连接oracle数据库过程图解

    PLSQL连接oracle数据库过程图解

    这篇文章主要介绍了PLSQL连接oracle数据库过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2008-02-02
  • SQL Transcation的一些总结分享

    SQL Transcation的一些总结分享

    相信大家对于SQL Transcation再熟悉不过,它确保了数据库的数据一致性和安全性,尤其在对数据执行增删时,如果发生异常和错误它就会触发事务回滚,从而确保了我们数据的一致性和安全性,下面我们将通过分四部分介绍事件(Transcation)
    2012-08-08
  • 获取数据库中两个时间字段的相差天数及ABS/DATEDIFF函数应用

    获取数据库中两个时间字段的相差天数及ABS/DATEDIFF函数应用

    本文将详细介绍获取数据库中两个时间字段的相差天数及ABS/DATEDIFF函数应用感兴趣的朋友可以了解下哦,希望本文对你巩固ABS/DATEDIFF函数有所帮助
    2013-01-01
  • Windows下使用性能监视器监控SqlServer的常见指标

    Windows下使用性能监视器监控SqlServer的常见指标

    这篇文章主要介绍了Windows下使用性能监视器监控SqlServer的常见指标,常见指标包括Buffer Cache Hit Ratio、Pages/sec、 Available Bytes、Disk Time、Avg. Disk Queue Length、Processor Time、Processor Queue Length等,需要的朋友可以参考下
    2015-02-02
  • Sql Server数据库实现表中字段的列加密

    Sql Server数据库实现表中字段的列加密

    本文主要介绍了Sql Server数据库实现表中字段的列加密,主要包括利用证书对数据进行加密和解密,利用非对称密钥对数据进行加密和解密,利用对称密钥对数据进行加密和解密,感兴趣的可以了解一下
    2023-10-10
  • SQL查询入门(中篇)

    SQL查询入门(中篇)

    SQL查询入门(中篇)
    2011-09-09
  • 精妙的SQL语句

    精妙的SQL语句

    精妙的SQL语句...
    2006-08-08
  • SQL Server 文件操作方法

    SQL Server 文件操作方法

    在master数据库中,SQL Server提供系统扩展的存储过程,其中有一些存储过程的命名以xp_开头,用于处理操作系统的文件。这篇文章主要介绍了SQL Server 文件操作方法,需要的朋友可以参考下
    2018-02-02
  • sqlserver 手工实现差异备份的步骤

    sqlserver 手工实现差异备份的步骤

    sqlserver 手工实现差异备份的步骤,需要的朋友可以参考下。
    2011-04-04

最新评论