Fungsi Terbilang Di Sql Server
CREATE function [dbo].[terjemahkan] (@nilai as decimal)
returns varchar(200) as
begin
/****************************************************************
created by zimmy gurning - 08 agustus 2004…begadang lg euy….pdhal mau tujuhbelasan neh..
fungsi ini untuk nerjemahin huruf
parameter input:
1. angka masukan dari fungsi terbilang
*****************************************************************/
declare @ts varchar(200), @st varchar(200), @s integer, @p integer, @r1 integer, @bil varchar(200), @tp varchar(200), @hasil varchar(200)
set @st = right(rtrim(str(@nilai + 1000)), 3)
set @s = cast(right(@st, 1) as integer)
set @p = cast(substring(@st, 2, 1) as integer)
set @r1 = cast(left(@st, 1) as integer)
set @bil = ’satu dua tiga empat lima ‘
set @bil = @bil + ‘enam tujuh delapan sembilan’
if @s = 0
set @ts = ”
else
set @ts = rtrim(substring(@bil, @s * 8 - 7, 8)) + ‘ ‘
if @p = 0
set @tp = @ts
else
if @p = 1
if @s = 0
set @tp = ’sepuluh ‘
else
if @s = 1
set @tp = ’sebelas ‘
else
set @tp = rtrim(substring(@bil, @s * 8 - 7, 8)) + ‘ belas ‘
else
set @tp = rtrim(substring(@bil, @p * 8 - 7, 8)) + ‘ puluh ‘ + @ts
if @r1 = 0
set @hasil = @tp
else
if @r1 = 1
set @hasil = ’seratus ‘ + @tp
else
set @hasil = rtrim(substring(@bil, @r1 * 8 - 7, 8)) + ‘ ratus ‘ + @tp
return @hasil
end
go
CREATE function [dbo].[f_terbilang] (@angka as decimal(19,2))
returns varchar (200) as
begin
/****************************************************************
created by zimmy gurning - 08 agustus 2004…begadang lg euy….pdhal mau tujuhbelasan neh..
fungsi ini untuk gen terbilang
parameter input:
1. angka masukan
*****************************************************************/
declare @b decimal, @r decimal, @j decimal, @m decimal, @t1 decimal, @koma1 decimal, @koma2 integer, @hasil varchar(200)
declare @s_t varchar(200), @ribu varchar(200), @juta varchar(200), @miliar varchar(200), @tx varchar(200), @angka1 varchar(200), @tx1 varchar(200)
set @s_t = case when len(rtrim(cast(cast(@angka as bigint) as varchar(20)))) < 15
then replicate(’0′,15 - len(rtrim(cast(cast(@angka as bigint) as varchar(20))))) + rtrim(cast(cast(@angka as bigint) as varchar(20)))
else rtrim(cast(cast(@angka as bigint) as varchar(20)))
end
–set @z = cast(15 - len(rtrim(cast(cast(@angka as integer) as varchar(20)))) as varchar(20))
–+ rtrim(cast(cast(@angka as integer) as varchar(20)))
set @r = cast(right(@s_t, 3) as integer)
set @b = cast(substring(@s_t, 10, 3) as integer)
set @j = cast(substring(@s_t, 7, 3) as integer)
set @m = cast(substring(@s_t, 4, 3) as integer)
set @t1 = cast(left(@s_t, 3) as integer)
set @ribu = case when @b = 0 then ‘ ‘ else case when @b = 1 then ’seribu’ else [dbo].terjemahkan(@b) + ‘ribu’ end end
set @juta = case when @j = 0 then ‘ ‘ else [dbo].terjemahkan(@j) + ‘juta ‘ end
set @miliar = case when @m = 0 then ‘ ‘ else [dbo].terjemahkan(@m) + ‘miliar’ end
set @tx = case
when @angka < 1000 — ratusan
then [dbo].terjemahkan(@r)
when @angka < 1000000 — ribuan
then @ribu + ‘ ‘ + [dbo].terjemahkan(@r)
when @angka < 1000000000 — jutaan
then [dbo].terjemahkan(@j) + ” + rtrim(’juta ‘ + @ribu) + ‘ ‘ + [dbo].terjemahkan(@r)
when @angka < 1000000000000 — miliaran
then [dbo].terjemahkan(@m) + ” + rtrim(’miliar ‘ + @juta + @ribu) + ‘ ‘ + [dbo].terjemahkan(@r)
when @angka >= 1000000000000 — trilliun
then [dbo].terjemahkan(@t1) + ” + rtrim(’trilliun ‘ + @miliar + @juta + @ribu) + ‘ ‘ + [dbo].terjemahkan(@r)
end
set @angka1 = rtrim(cast(@angka as varchar(20)))
set @koma1 = case when charindex(’.', @angka1) = 0 then 0 else cast(rtrim(substring(@angka1, charindex(’.',@angka1) + 1, 2)) as integer) end
set @koma2 = len(case when charindex(’.',@angka1) = 0 then ‘0′ else rtrim(substring(@angka1, charindex(’.',@angka1) + 1, 2)) end)
if @koma1 > 0
begin
if @koma1 < 10 and @koma2 = 1
set @koma1 = @koma1 * 10
set @tx1 = [dbo].terjemahkan(@koma1)
set @hasil = @tx + ‘rupiah ‘ + @tx1 + ’sen’
end
else
set @hasil = @tx + ‘rupiah’
return (@hasil)
end

















































