用TranSql 实现大小写转换

本文介绍了一组SQL函数,用于将数值金额转换为中文大写形式,并包含了金额单位的转换。通过这些函数,可以方便地实现财务系统中金额显示的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--======================================================================
--
-- SQL Source File -- Created with Huangju
--
-- NAME: 金额单位转换
--
-- AUTHOR: HuangJu.MeiZhou.Gmcc
-- DATE  : 2006-1-27
-- Parameters:@Letter 位
-- COMMENT: 金额单位转换
--
--======================================================================

CREATE FUNCTION GetUnit (@Letter int) 
RETURNS  varchar(10)
AS 
BEGIN

 return case @Letter
   when -2 then '分'
   when -1 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 '亿'
   when 10 then '十'
   when 11 then '佰'
       end

END


--======================================================================
--
-- SQL Source File -- Created with Huangju
--
-- NAME: 数字转换为大写
--
-- AUTHOR: HuangJu.MeiZhou.Gmcc
-- DATE  : 2006-1-27
-- Parameters:@Letter 数字
-- COMMENT: 数字转换为大写
--
--======================================================================

CREATE FUNCTION GetUpper (@Letter varchar(1)) 
RETURNS  varchar(10)
AS 
BEGIN

 return case @Letter
   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

END


--======================================================================
--
-- SQL Source File -- Created with Huangju
--
-- NAME: 金额转换大写
--
-- AUTHOR: HuangJu.MeiZhou.Gmcc
-- DATE  : 2006-1-27
-- Parameters:@Letter 金额
-- COMMENT: 金额转换大写
--
--======================================================================

CREATE function GetUpperMoney( @money varchar(200))
returns varchar(400)
AS
begin
declare @a varchar(200),
@aa varchar(200), --整数部分
@ab varchar(200), --小数部分
@ac int,  --级数
@ad varchar(300),  --存放结果
@i int,   --循环变量
@dotIndex int  --小数点位置

set @a=@Money

if len(@a)<1
 return ''


if  ISNUMERIC(@a)<>1
 return ''


set @aa=''


if PatIndex('%.%',@a)=0
 set @a=@a+'.00'

 

set @dotIndex =  PatIndex('%.%',@a)

 

set @aa=left(@a,@dotIndex-1)

declare @strf varchar(20)
set @strf = substring(@a,patindex('%.%',@a)+1,3)
select @strf =cast('0.'+@strf as decimal(20,2))
set @ab = right(@strf,2)

set @ad=''

---------------------------处理整数部分  开始-----------------------------------
set @i=1
set @ac=len(@aa)

while @i<=len(@aa)
begin

 if substring(@aa,@i,1)='0'
 begin
  if substring(@aa,@i-1,1) <>'0'
   set @ad= @ad +[dbo].[GetUpper](substring(@aa,@i,1))  

 end
 else
 begin
  set @ad= @ad +[dbo].[GetUpper](substring(@aa,@i,1))  
  set @ad =@ad +[dbo].[GetUnit](@ac)
 end
 set @ac=@ac-1
 set @i=@i+1
end
---------------------------处理整数部分  结束-----------------------------------

---------------------------处理小数部分  开始-----------------------------------

set @ad= @ad + dbo.GetUpper(left(@ab,1))
set @ad =@ad + dbo.GetUnit(-1)
set @ad= @ad + dbo.GetUpper(right(@ab,1))
set @ad =@ad + dbo.GetUnit(-2)
---------------------------处理小数部分  结束-----------------------------------

return @ad

END

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值