Функция C# или SQL, необходимая для количества слов в тайском языке
Привет,
мне нужна функция C#, которая преобразует сумму в слова для тайского языка.
пример:
1,450,829.77 =&ГТ; หนึ่งล้านสี่แสนห้าหมื่นแปดร้อยยี่สิบเก้าบาทและเจ็ดสิบเจ็ดสตางค์
30,459.24 =&ГТ; สามหมื่นสี่ร้อยห้าสิบเก้าบาทและยี่สิบสี่สตางค์
Спасибо заранее
Что я уже пробовал:
В настоящее время я создал в базе данных SQL, но он дает какой-то неправильный вывод, его не дают в соответствии с приведенным выше примером
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) --WHEN @Number BETWEEN 1000000000000000 AND 999999999999999999 -- THEN (dbo.fnNumberToThaiWords( @Number / 1000000000000000))+' Quadrillion '+ -- dbo.fnNumberToThaiWords( @Number % 1000000000000000) --WHEN @Number BETWEEN 1000000000000000000 AND 999999999999999999999 -- THEN (dbo.fnNumberToThaiWords( @Number / 1000000000000000000))+' Quintillion '+ -- dbo.fnNumberToThaiWords( @Number % 1000000000000000000) ELSE N'ข้อมูลที่ไม่ถูกต้อง' END ) SELECT @English = RTRIM(@English) SELECT @English = RTRIM(LEFT(@English,len(@English)-1)) WHERE RIGHT(@English,1)='-' RETURN (@English) END
Richard MacCutchan
У вас есть код SQL, поэтому преобразование его в C# не должно быть проблемой.
Member 13934994
Привет,
это неверный код.
Richard MacCutchan
Затем выбросьте его и начните снова. Преобразование чисел в слова (на любом языке) не является сложной проблемой, и Google, скорее всего, найдет для вас несколько готовых статей по этой теме.
Member 13934994
да, каждый легко может найти сумму в словах для английского языка, но это трудно для тайского.
мы также нашли некоторую функцию и выше sql запрос также создан но клиент сказал что он дает неправильный вывод
Richard MacCutchan
Как бы трудно это ни было, в C# все равно будет проще, чем в SQL. А наличие кода внутри SQL-сервера-это действительно пустая трата ресурсов. Единственный раз, когда вам нужно преобразовать его, - это когда вы хотите показать его человеку для чтения.