在线建站培训
您的位置: 魔客吧 网络编程 MSSQL教程 查看内容

SQL货币数字转英文字符语句

2018-5-10 11:41 | 发布者: moke | 栏目:MSSQL教程

复制代码 代码如下:

Alter Function UDF_Util_ConvertCurrencyToEnglish
(
@Money Numeric(15,2),
@Unit varchar(10)='BAHT'
) Returns Varchar(400)
As
/*
///
/// Convert money to english
///

/// e.g. 1234.56
/// e.g. 'BAHT'
/// english money
*/
Begin
DECLARE @result Varchar(400)
IF @Money=0
Set @result= 'ZERO '[email protected]
Else
Begin
Declare @i Int, @hundreds Int, @tenth Int, @one Int, @thousand Int,@million Int,@billion Int,@numbers Varchar(400),@s Varchar(15)
Set @numbers='ONE TWO THREE FOUR FIVE '
+'SIX SEVEN EIGHT NINE TEN '
+'ELEVEN TWELEVE THIRTEEN FOURTEEN FIFTEEN '
+'SIXTEEN SEVENTEEN EIGHTEEN NINETEEN '
+'TWENTY THIRTY FORTY FIFTY '
+'SIXTY SEVENTY EIGHTY NINETY '

Set @s=RIGHT('000000000000000'+Cast(@Money As varchar(15)),15)
Set @billion=Cast(Substring(@s,1,3) As Int)
Set @million=Cast(Substring(@s,4,3) As Int)
Set @thousand=Cast(Substring(@s,7,3) As Int)
Set @result=''
Set @i=0

While @i<=3
BEGIN

Set @hundreds=Cast(Substring(@s,@i*3+1,1) As Int)
Set @tenth=Cast(Substring(@s,@i*3+2,1) As Int)
Set @one=(Case @tenth When 1 Then 10 Else 0 End)+Cast(Substring(@s,@i*3+3,1) As Int)
Set @tenth=(Case When @tenth<=1 Then 0 Else @tenth End)

IF (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds=0 and (@tenth>0 or @one>0)))
Set @[email protected]+' AND '

IF @hundreds>0
Set @[email protected]+RTRIM(Substring(@numbers,@hundreds*10-9,10))+' HUNDRED '

IF @tenth>=2 and @tenth<=9
BEGIN
IF @hundreds>0
Set @[email protected]+' AND '
Set @[email protected]+RTRIM(Substring(@numbers,@tenth*10+171,10))+' '
END

IF @one>=1 and @one<=19
BEGIN
IF @hundreds>0 AND @tenth=0
Set @[email protected]+' AND '
Set @[email protected]+RTRIM(Substring(@numbers,@one*10-9,10))
END

IF @i=0 and @billion>0
Set @[email protected]+' BILLION '
IF @i=1 and @million>0
Set @[email protected]+' MILLION '
IF @i=2 and @thousand>0
Set @[email protected]+' THOUSAND '
Set @[email protected]+1
END

IF(@result<>'')
Set @[email protected]+' '[email protected]

IF Substring(@s,14,2)<>'00'
Begin
Set @tenth=CAST(Substring(@s,14,1) AS INT)
Set @one=CAST(Substring(@s,15,1) AS INT)

IF(@tenth>=2 and @tenth<=9)
Set @[email protected]+RTRIM(Substring(@numbers,@tenth*10+171,10))
IF @tenth=1 AND @one>=1 and @one<=19
Set @[email protected]+' '+RTRIM(Substring(@numbers,CAST(Substring(@s,14,2) AS INT)*10-9,10))
ELSE
Set @[email protected]+' '+RTRIM(Substring(@numbers,@one*10-9,10))

SET @[email protected]+' SATANG '
END
ELSE
Set @[email protected]+' ONLY'

END
RETURN @result
END

魔客吧温馨提示:如果正在寻找登录界面模板,那么到魔客吧的 登录界面模板 频道看看吧,这里有很多的登录界面模板哦!

最新分享资源

最新评论

验证码 换一个