--======================================================================
--
-- 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