Hello,
i require a C# function which convert amount to words for thai language.
example:
1,450,829.77 =>
หนึ่งล้านสี่แสนห้าหมื่นแปดร้อยยี่สิบเก้าบาทและเจ็ดสิบเจ็ดสตางค์
30,459.24 =>
สามหมื่นสี่ร้อยห้าสิบเก้าบาทและยี่สิบสี่สตางค์
Thanx in Advance
What I have tried:
Currently i have created in SQL Database but its giving some wrong output, its not giving as per above example
ALTER FUNCTION [dbo].[fnNumberToThaiWords](@Number as BIGINT)
RETURNS NVARCHAR(1024)
AS
BEGIN
DECLARE @Below20 TABLE (ID int identity(0,1), Word NVARCHAR(32))
DECLARE @Below100 TABLE (ID int identity(2,1), Word NVARCHAR(32))
INSERT @Below20 (Word) VALUES
( N'ศูนย์'), (N'หนึ่ง'),(N'สอง' ), (N'สาม'),
( N'สี่' ), ( N'ห้า' ), ( N'หก' ), ( N'เจ็ด' ),
( N'แปด'), ( N'เก้า'), ( N'สิบ'), ( N'สิบเอ็ด' ),
( N'สิบสอง' ), ( N'สิบสาม' ), ( N'สิบสี่'),
( N'สิบห้า' ), (N'สิบหก' ), ( N'สิบเจ็ด'),
(N'สิบแปด' ), ( N'สิบเก้า' )
INSERT @Below100 VALUES (N'ยี่สิบ'), (N'สามสิบ'),(N'สี่สิบ'), (N'ห้าสิบ'),
(N'หกสิบ'), (N'เจ็ดสิบ'), (N'แปดสิบ'), (N'เก้าสิบ')
DECLARE @English Nvarchar(1024) =
(
SELECT Case
WHEN @Number = 0 THEN ''
WHEN @Number BETWEEN 1 AND 19
THEN (SELECT Word FROM @Below20 WHERE ID=@Number)
WHEN @Number BETWEEN 20 AND 99
THEN (SELECT Word FROM @Below100 WHERE ID=@Number/10) + dbo.fnNumberToThaiWords( @Number % 10)
WHEN @Number BETWEEN 100 AND 999
THEN (dbo.fnNumberToThaiWords( @Number / 100))+N'ร้อย' + dbo.fnNumberToThaiWords( @Number % 100)
WHEN @Number BETWEEN 1000 AND 999999
THEN (dbo.fnNumberToThaiWords( @Number / 1000))+N'พัน' + dbo.fnNumberToThaiWords( @Number % 1000)
WHEN @Number BETWEEN 1000000 AND 999999999
THEN (dbo.fnNumberToThaiWords( @Number / 1000000))+N'ล้าน' + dbo.fnNumberToThaiWords( @Number % 1000000)
WHEN @Number BETWEEN 1000000000 AND 999999999999
THEN (dbo.fnNumberToThaiWords( @Number / 1000000000))+N'พันล้าน'+ dbo.fnNumberToThaiWords( @Number % 1000000000)
WHEN @Number BETWEEN 1000000000000 AND 999999999999999
THEN (dbo.fnNumberToThaiWords( @Number / 1000000000000))+N'ล้านล้าน'+ dbo.fnNumberToThaiWords( @Number % 1000000000000)
ELSE N'ข้อมูลที่ไม่ถูกต้อง' END
)
SELECT @English = RTRIM(@English)
SELECT @English = RTRIM(LEFT(@English,len(@English)-1))
WHERE RIGHT(@English,1)='-'
RETURN (@English)
END