当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL货币数字转英文字符语句

MSSQL
最簡便的備份MySql資料庫方法
MS SQL 数据库备份和还原的几种方法
深入浅出SQL系列教程之SQL语言简介
Asp备份与恢复SQL Server
实战MSSQL 2000数据库之MSSQL Server安装
五种提高SQL Server性能的方法
SQL Server数据库备份和恢复措施
INSERT语法使用技巧一例
sql注入防范方法
操作数据库结构Sql语句
精妙SQL语句介绍
SQL Server常见连接错误
SQL如何备份并压缩备份文件?
Access数据库升迁SQLServer
SQL Server中如何计算农历
SQL SERVER Agent服务使用技巧小结
SQL SERVER使用嵌套触发器
“SQL Server不存在或访问被拒绝”问题的解决
SQL Server 管理常用的SQL和T-SQL(二)
谈SQL Server 2005中的T-SQL增强

MSSQL 中的 SQL货币数字转英文字符语句


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 139 ::
收藏到网摘: n/a

SQL货币数字转英文字符,需要的朋友可以参考下。
复制代码 代码如下:

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