This document contains code for several SQL functions:
- A function to convert a number to its word representation in Indonesian.
- A function to convert a money amount to its word representation in English.
- A function to calculate and return the number of years, months, and days between two date values.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
410 views6 pages
Function SQL Terbilang Rupiah, Dolar, Umur
This document contains code for several SQL functions:
- A function to convert a number to its word representation in Indonesian.
- A function to convert a money amount to its word representation in English.
- A function to calculate and return the number of years, months, and days between two date values.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6
Welcome to SQL
Function terbilang (rupiah & dolar)
Function terbilang umur
Abdul Gani Putras
CREATE function [dbo].[terbilang] (@nilai bigint) RETURNS varchar(1024) AS BEGIN DECLARE @hasil varchar(1024),@x bigint
DECLARE @angka TABLE ( kode int, ket varchar(20)) INSERT INTO @angka VALUES(0,'') INSERT INTO @angka VALUES(1,'Satu') INSERT INTO @angka VALUES(2,'Dua') INSERT INTO @angka VALUES(3,'Tiga') INSERT INTO @angka VALUES(4,'Empat') INSERT INTO @angka VALUES(5,'Lima') INSERT INTO @angka VALUES(6,'Enam') INSERT INTO @angka VALUES(7,'Tujuh') INSERT INTO @angka VALUES(8,'Delapan') INSERT INTO @angka VALUES(9,'Sembilan') INSERT INTO @angka VALUES(10,'Sepuluh') INSERT INTO @angka VALUES(11,'Sebelas') IF @nilai <12 SET @hasil = (SELECT ket FROM @angka WHERE kode=@nilai) ELSE IF @nilai <20 BEGIN SET @x = @nilai - 10 SET @hasil = (SELECT ket FROM @angka WHERE kode=@x) + ' Belas' END ELSE IF @nilai <100 BEGIN SET @x = @nilai / 10 SET @hasil = (SELECT ket FROM @angka WHERE kode=@x) + ' Puluh ' SET @x = @nilai % 10 SET @hasil = @hasil + (SELECT ket FROM @angka WHERE kode=@x) END ELSE IF @nilai <200 BEGIN SET @x = @nilai - 100 SET @hasil = 'Seratus ' + dbo.terbilang(@x) END ELSE IF @nilai <1000 BEGIN SET @x = @nilai / 100 SET @hasil = dbo.terbilang(@x) + ' Ratus ' SET @x = @nilai % 100 SET @hasil = @hasil + dbo.terbilang(@x) END ELSE IF @nilai <2000
BEGIN SET @x = @nilai - 1000 SET @hasil = 'Seribu ' + dbo.terbilang(@x) END ELSE IF @nilai <1000000 BEGIN SET @x = @nilai / 1000 SET @hasil = dbo.terbilang(@x) + ' Ribu ' SET @x = @nilai % 1000 SET @hasil = @hasil + dbo.terbilang(@x) END ELSE IF @nilai <1000000000 BEGIN SET @x = @nilai / 1000000 SET @hasil = dbo.terbilang(@x) + ' Juta ' SET @x = @nilai % 1000000 SET @hasil = @hasil + dbo.terbilang(@x) END ELSE IF @nilai <1000000000000 BEGIN SET @x = @nilai / 1000000000 SET @hasil = dbo.terbilang(@x) + ' Milyar ' SET @x = @nilai % 1000000000 SET @hasil = @hasil + dbo.terbilang(@x) END ELSE IF @nilai <1000000000000000 BEGIN SET @x = @nilai / 1000000000000 SET @hasil = dbo.terbilang(@x) + ' Trilyun ' SET @x = @nilai % 1000000000000 SET @hasil = @hasil + dbo.terbilang(@x) END ELSE SET @hasil = 'N/A' RETURN @hasil END
CREATE FUNCTION [dbo].[fnMoneyToEnglishNL](@Money AS money, @nl int)
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @Number as BIGINT
SET @Number = FLOOR(@Money)
DECLARE @Below20 TABLE (ID int identity(0,1), Word varchar(32))
DECLARE @Below100 TABLE (ID int identity(2,1), Word varchar(32))
( 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
-- SQL Server recursive function THEN (SELECT Word FROM @Below100 WHERE ID=@Number/10)+ '-' + dbo.fnMoneyToEnglishNL( @Number % 10, @nl) WHEN @Number BETWEEN 100 AND 999 THEN (dbo.fnMoneyToEnglishNL( @Number / 100, @nl))+' Hundred '+ dbo.fnMoneyToEnglishNL( @Number % 100, @nl) WHEN @Number BETWEEN 1000 AND 999999 THEN (dbo.fnMoneyToEnglishNL( @Number / 1000, @nl))+' Thousand '+ dbo.fnMoneyToEnglishNL( @Number % 1000, @nl) WHEN @Number BETWEEN 1000000 AND 999999999 THEN (dbo.fnMoneyToEnglishNL( @Number / 1000000, @nl))+' Million '+