Copy codeThe Code is as follows:
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'
+ 'Even tweleve thirteen fourteen effecteen'
+ 'Sixteen seventeen eighteen nineteen'
+ 'Twenty thirty forty equalty'
+ 'Sixty seventy eighty ninety'
Set @ s = RIGHT ('000000' + 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