SQL - Amount to Word (Vietnamese)

fsothanhchu fsothanhchu_mini

---------------------------------------------------------------------------------------------
Create FUNCTION [dbo].[fSoThanhChu_Mini] (@MyNumber int)
RETURNS Nvarchar(100)
AS
BEGIN

declare @text nvarchar(100)
Declare @isLang bit

declare @Tram nvarchar(20)
set @Tram = N''
--if 1000*@MyNumber % convert (int, ( left('1000000000000', len(@MyNumber)))) <= 99 set @Tram = N' không trăm '
if @MyNumber % 1000 <= 99 set @Tram = N' không trăm '

if @MyNumber% 1000 <= 9 and 1000*@MyNumber % 1000 <= 99 set @Tram = N' không trăm lẻ '

set @text = N''
SET @MyNumber = @MyNumber % 1000

IF @MyNumber > 99
BEGIN

SET @text = @text + case convert(int,@MyNumber/100)
when 0 then N'không'
when 1 then N'một'
when 2 then N'hai'
when 3 then N'ba'
when 4 then N'bốn'
when 5 then N'năm'
when 6 then N'sáu'
when 7 then N'bảy'
when 8 then N'tám'
when 9 then N'chín'
end + N' trăm '

END

SET @isLang = 0
SET @MyNumber = @MyNumber % 100

IF @MyNumber > 9
BEGIN

SET @text = @text + case convert(int,@MyNumber/10)
when 0 then N'không'
when 1 then N'một'
when 2 then N'hai'
when 3 then N'ba'
when 4 then N'bốn'
when 5 then N'năm'
when 6 then N'sáu'
when 7 then N'bảy'
when 8 then N'tám'
when 9 then N'chín'
end + N' mươi '

SET @isLang = 1

END

Else

IF @MyNumber % 10 > 0
BEGIN

IF @text <> N'' SET @text = @text + N'lẻ '

END

SET @MyNumber = @MyNumber % 10

IF @MyNumber > 0
BEGIN
IF @isLang = 1
BEGIN
SET @text = @text + Case @MyNumber % 10
when 1 then N'mốt '
when 5 then N'lăm '
else case @MyNumber % 10
when 0 then N'không'
when 1 then N'một'
when 2 then N'hai'
when 3 then N'ba'
when 4 then N'bốn'
when 5 then N'năm'
when 6 then N'sáu'
when 7 then N'bảy'
when 8 then N'tám'
when 9 then N'chín'
end
end

END
ELSE
BEGIN
SET @text = @text +case @MyNumber % 10
when 0 then N'không'
when 1 then N'một'
when 2 then N'hai'
when 3 then N'ba'
when 4 then N'bốn'
when 5 then N'năm'
when 6 then N'sáu'
when 7 then N'bảy'
when 8 then N'tám'
when 9 then N'chín'
end
END
END

if @text <> '' set @text = @Tram + @text
RETURN @text

END

---------------------------------------------------------------------------------------------

Create FUNCTION [dbo].[fsothanhchu] (@MyNumber bigint)
RETURNS nvarchar(200)
AS
BEGIN

--Xu li so am
declare @SoAm as bit
set @SoAm = 0

if @MyNumber < 0
begin

set @SoAm = 1
set @MyNumber = abs(@MyNumber)

end

--May cai chuoi nay vi trong ham mini cong du
declare @removeString1 nvarchar(20)
declare @removeString2 nvarchar(20)
declare @removeString3 nvarchar(30)

set @removeString1 = N'không trăm'
set @removeString2 = N'lẻ'
set @removeString3 = N'không trăm lẻ triệu'

declare @text nvarchar(200)

SET @text = ''

--neu so o thi phai set o day
if @MyNumber = 0 set @text = N'Không'
If CONVERT(bigint, @MyNumber / 1000000000000000) > 0
SET @text = DBO.fSoThanhChu_Mini( CONVERT(bigint, @MyNumber / 1000000000000000)) + N' triệu '

If CONVERT(bigint, @MyNumber / 1000000000000) > 0
SET @text = DBO.fSoThanhChu_Mini( CONVERT(bigint, @MyNumber / 1000000000000)) + N' ngàn '
If CONVERT(bigint, @MyNumber / 1000000000) > 0
SET @text =@text + DBO.fSoThanhChu_Mini( CONVERT(bigint, @MyNumber / 1000000000)) + N' tỉ '

SET @MyNumber = @MyNumber % 1000000000

If CONVERT(bigint, @MyNumber / 1000000) > 0
SET @text = @text + DBO.fSoThanhChu_Mini( CONVERT(bigint, @MyNumber / 1000000)) + N' triệu '
SET @MyNumber = @MyNumber % 1000000
If CONVERT(bigint,@MyNumber / 1000) > 0
SET @text = @text + DBO.fSoThanhChu_Mini( CONVERT(bigint, @MyNumber / 1000)) + N' ngàn '

SET @text = @text + DBO.fSoThanhChu_Mini( convert(bigint,@MyNumber))
set @text = ltrim(@text)
set @text = rtrim(@text)

if left(@text, len (@removeString1)) = @removeString1 set @text = right(@text, len(@text) - len(@removeString1))
set @text = ltrim(@text)
set @text = rtrim(@text)
if left(@text, len (@removeString2)) = @removeString2 set @text = right(@text, len(@text) - len(@removeString2))
set @text = ltrim(@text)
set @text = rtrim(@text)
if right(@text, len (@removeString2) ) = @removeString2 set @text = left(@text, len(@text) - len(@removeString2))
set @text = ltrim(@text)
set @text = rtrim(@text)
if right(@text, len (@removeString1)) = @removeString1 set @text = left(@text, len(@text) - len(@removeString1))

set @text = ltrim(@text)
set @text = rtrim(@text)

if right(@text, len (@removeString3)) = @removeString3 set @text = left(@text, len(@text) - len(@removeString3))

set @text = ltrim(@text)
set @text = rtrim(@text)

SET @text = replace(@text, ' ' ,' ')

if left(@text, 8)=N'Một mươi'
SET @text = Replace(@text, N'Một mươi', N'Mười')

SET @text = Replace(@text, N'một mươi', N'mười')
SET @text = Replace(@text, N'mười mốt', N'mười một')
SET @text = replace(@text, N'tỉ triệu' ,'tỉ')
if @SoAm =1

begin

set @text = 'âm ' + @text

end
set @text = lower(@text)
SET @text = UPPER(left(LTrim(@text), 1)) + SUBSTRING(Ltrim(@text), 2 , LEN(@text)-1)

return @text+ N' đồng'

END

---------------------------------------------------------------------------------------------

1 comment

  • online casino slots free casino games cashman casino slots online slot games http://onlinecasinouse.com/#

    Peaddypiopind

Để lại một bình luận