金额转换函数实现

原创 2007年09月30日 13:03:00
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER FUNCTION [dbo].[FN_CONTRACT_MONEY_UPPER] (@n_LowerMoney numeric(15,2),@v_TransType int)  
RETURNS VARCHAR(200AS  
BEGIN 
Declare @v_LowerStr VARCHAR(200-- 小写金额 
Declare @v_UpperPart VARCHAR(200
Declare @v_UpperStr VARCHAR(200-- 大写金额
Declare @i_I int

set @v_LowerStr = LTRIM(RTRIM(ROUND(@n_LowerMoney,-2))) --四舍五入为指定的精度并删除数据左右空格--精确到百位
set @i_I = 1
set @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
set @v_UpperStr = @v_UpperPart + @v_UpperStr
set @i_I = @i_I + 1
end

if ( 0 = @v_TransType)
begin
set @v_UpperStr = REPLACE(@v_UpperStr,'零拾',''
set @v_UpperStr = REPLACE(@v_UpperStr,'零佰',''
set @v_UpperStr = REPLACE(@v_UpperStr,'零仟',''
set @v_UpperStr = REPLACE(@v_UpperStr,'零零零','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零零','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零分','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零角','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')
set @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')
set @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')
set @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')
set @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')
set @v_UpperStr = REPLACE(@v_UpperStr,'零万','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零元','')
set @v_UpperStr = REPLACE(@v_UpperStr,'零零','')
end

-- 对壹元以下的金额的处理 
if ( '' = substring(@v_UpperStr,1,1))
begin
     
set @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr- 1))
end

if ( '' = substring(@v_UpperStr,1,1))
begin
     
set @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr- 1))
end

if ( '' = substring(@v_UpperStr,1,1))
begin
     
set @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr- 1))
end

if ( '' = substring(@v_UpperStr,1,1))
begin
     
set @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr- 1))
end

if ('' = substring(@v_UpperStr,1,1))
begin
     
set @v_UpperStr = '零元整'
end

return replace(replace(replace(replace(replace(replace(@v_UpperStr,'零角',''),'零分',''),'零元',''),'零拾',''),'零佰',''),'零仟','')+'圆整'
END



 

MSSql 自定义函数实现小写金额转换成大写(最高13位不包括小数点后两位)

今天做项目的时候,需要生成WORD文档,然后要求把小写金额全部转换为大写,于是乎分享代码---功能:小写金额转换成大写(最高13位不包括小数点后两位)...

金额大小写转换函数.xls

  • 2008年02月15日 10:38
  • 28KB
  • 下载

人民币金额大小写转换函数

  • 2008年05月06日 15:38
  • 3KB
  • 下载

js jquery版本的 金额千分位转换函数(非正则,效率极高)

没想到js里面没有 金额千分位格式化的处理函数(例:1,234.01 这样的格式),网上搜了一圈,都是使用正则的方式处理的。正则的效率不敢恭维啊,又耗费资源速度又慢(虽然处理起来会直观一些)。 因此...

oracle里存储函数将金额数字转换成大写

CREATE OR REPLACE FUNCTION NUMBER_TO_CHINESE(P_NUM IN NUMBER DEFAULT NULL) RETURN NVARCHAR2 IS ...

ORACLE金额转换成英文大写的函数

用法如下:get_capital_money(Currency, Money) Currency: 货币或货币描述,将放在英文大写的前面; Money:金额。支持两位小数点。如果需要更多的小数点,请自...

SQLSERVER金额转换成英文大写的函数

CREATE FUNCTION [dbo].[f_num_eng] (@num numeric(15,2)) RETURNS varchar(400) WITH ENCRYPTION AS BEGIN...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:金额转换函数实现
举报原因:
原因补充:

(最多只允许输入30个字)