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

2022-05-24 0 611

复制代码 代码如下:

Alter Function UDF_Util_ConvertCurrencyToEnglish

(

@Money Numeric(15,2),

@Unit varchar(10)=’BAHT’

) Returns Varchar(400)

As

/*

/// <summary>

/// Convert money to english

/// </summary>

/// <param name=”@Money”>e.g. 1234.56 </param>

/// <param name=”@Unit”>e.g. ‘BAHT’ </param>

/// <returns>english money</returns>

*/

Begin

DECLARE @result Varchar(400)

IF @Money=0

Set @result= ‘ZERO ‘+@Unit

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 @result=@result+’ AND ‘

IF @hundreds>0

Set @result=@result+RTRIM(Substring(@numbers,@hundreds*10-9,10))+’ HUNDRED ‘

IF @tenth>=2 and @tenth<=9

BEGIN

IF @hundreds>0

Set @result=@result+’ AND ‘

Set @result=@result+RTRIM(Substring(@numbers,@tenth*10+171,10))+’ ‘

END

IF @one>=1 and @one<=19

BEGIN

IF @hundreds>0 AND @tenth=0

Set @result=@result+’ AND ‘

Set @result=@result+RTRIM(Substring(@numbers,@one*10-9,10))

END

IF @i=0 and @billion>0

Set @result=@result+’ BILLION ‘

IF @i=1 and @million>0

Set @result=@result+’ MILLION ‘

IF @i=2 and @thousand>0

Set @result=@result+’ THOUSAND ‘

Set @i=@i+1

END

IF(@result<>”)

Set @result=@result+’ ‘+@Unit

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 @result=@result+RTRIM(Substring(@numbers,@tenth*10+171,10))

IF @tenth=1 AND @one>=1 and @one<=19

Set @result=@result+’ ‘+RTRIM(Substring(@numbers,CAST(Substring(@s,14,2) AS INT)*10-9,10))

ELSE

Set @result=@result+’ ‘+RTRIM(Substring(@numbers,@one*10-9,10))

SET @result=@result+’ SATANG ‘

END

ELSE

Set @result=@result+’ ONLY’

END

RETURN @result

END

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql SQL货币数字转英文字符语句 https://www.niceym.com/59949.html