mssql sqlserver 将数值型(金额)转换为中文人民币大写文字的方法分享


摘要:
下文将分享两个将数值类型转换为大写中文金额的方法分享,如下所示:
实验环境:sqlserver 2008 R2


    ---转换函数定义: 
    CREATE function toUpperRenMinBi (@jinE decimal(18,4))
      returns varchar(200) 
      as    
      begin    
   declare @lowerStr varchar(200)    
   declare @backRenMinBiInfo varchar(200)    ---返回信息 
   declare @UpperPart varchar(200)     --长度    
   declare @i int     
       
   set @lowerStr=ltrim(rtrim(convert(decimal(18,2),round(@jinE,2))))    
   set @i=1    
   set @backRenMinBiInfo=''    
       
   while(@i<=len(@lowerStr))    
   begin    
		select @UpperPart=
		case substring(@lowerStr,len(@lowerStr)-@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     
			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 @backRenMinBiInfo=@UpperPart+@backRenMinBiInfo    
		set @i=@i+1    
	end     
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零拾','零')     
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零佰','零')     
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零仟零佰零拾','零')     
	set @backRenMinBiInfo  = REPLACE(@backRenMinBiInfo,'零仟','零')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零零零','零')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零零','零')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零角零分','')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零分','')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零角','零')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零亿零万零元','亿元')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'亿零万零元','亿元')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零亿零万','亿')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零万零元','万元')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'万零元','万元')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零亿','亿')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零万','万')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零元','元')    
	set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'零零','零')    
	if left(@backRenMinBiInfo,1)='元'    
		set @backRenMinBiInfo = REPLACE(@backRenMinBiInfo,'元','零元')    
 
  return @backRenMinBiInfo+'整'    
end    
go
-------测试--------------
SELECT  [dbo].[toUpperRenMinBi](186.23)
	
mssql_sqlserver_金额_转换中文大写

mssql_sqlserver_金额_转换中文大写