手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >SQL货币数字转英文字符语句
SQL货币数字转英文字符语句
摘要:复制代码代码如下:AlterFunctionUDF_Util_ConvertCurrencyToEnglish(@MoneyNumeric(...

复制代码 代码如下:

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

【SQL货币数字转英文字符语句】相关文章:

SQL Server压缩日志及数据库文件大小

一些SQL Server存储过程参数及例子

一个简单的SQL 行列转换语句

SQL 实用语句

SQL 连接查询语法及使用

SQL Server中选出指定范围行的SQL语句代码

SQLServer中求两个字符串的交集

删除SQL Server数据中指定的重复记录

MSSQL汉字转拼音函数实现语句

SQL语句示例

精品推荐
分类导航