Lagi mencari fungsi di Microsoft SQL Server untuk menampilkan kata terbilang dari jumlah uang / angka, mungkin ini bagus untuk referensi.
Mungkin hasil dari output program dibawah adalah:
1.000.000,99 = (satu juta sembilan puluh sembilan sen)
CREATE FUNCTION [dbo].[f_terbilang] (@ls_amount AS DECIMAL(19,2))
RETURNS VARCHAR (200) AS
BEGIN
DECLARE
@ld_dec1 DECIMAL,
@ld_dec2 DECIMAL,
@ld_dec3 DECIMAL,
@ld_dec4 DECIMAL,
@ld_dec5 DECIMAL,
@ld_dec6 DECIMAL,
@ld_int1 INTEGER,
@ls_str1 VARCHAR(200),
@ls_str2 VARCHAR(200),
@ls_str3 VARCHAR(200),
@ls_str4 VARCHAR(200),
@ls_str5 VARCHAR(200),
@ls_str6 VARCHAR(200),
@ls_str7 VARCHAR(200),
@ls_str8 VARCHAR(200)
SET @ls_str2 = CASE WHEN LEN(RTRIM(CAST(CAST(@ls_amount AS bigint) AS VARCHAR(20)))) < 15
THEN replicate('0',15 - LEN(RTRIM(CAST(CAST(@ls_amount AS bigint) AS VARCHAR(20))))) + RTRIM(CAST(CAST(@ls_amount AS bigint) AS VARCHAR(20)))
ELSE RTRIM(CAST(CAST(@ls_amount AS bigint) AS VARCHAR(20)))
END
--SET @z = CAST(15 - LEN(RTRIM(CAST(CAST(@ls_amount AS INTEGER) AS VARCHAR(20)))) AS VARCHAR(20)) -+ RTRIM(CAST(CAST(@ls_amount AS INTEGER) AS VARCHAR(20)))
SET @ld_dec2 = CAST(RIGHT(@ls_str2, 3) AS INTEGER)
SET @ld_dec1 = CAST(SUBSTRING(@ls_str2, 10, 3) AS INTEGER)
SET @ld_dec3 = CAST(SUBSTRING(@ls_str2, 7, 3) AS INTEGER)
SET @ld_dec4 = CAST(SUBSTRING(@ls_str2, 4, 3) AS INTEGER)
SET @ld_dec5 = CAST(Left(@ls_str2, 3) AS INTEGER)
SET @ls_str3 = CASE WHEN @ld_dec1 = 0 THEN ' ' ELSE CASE WHEN @ld_dec1 = 1 THEN 'Seribu' ELSE [dbo].f_terbilang_detail(@ld_dec1) + 'Ribu' END END
SET @ls_str4 = CASE WHEN @ld_dec3 = 0 THEN ' ' ELSE [dbo].f_terbilang_detail(@ld_dec3) + 'Juta ' END
SET @ls_str5 = CASE WHEN @ld_dec4 = 0 THEN ' ' ELSE [dbo].f_terbilang_detail(@ld_dec4) + 'Miliar' END
SET @ls_str6 = CASE
WHEN @ls_amount < 1000
THEN [dbo].f_terbilang_detail(@ld_dec2)
WHEN @ls_amount < 1000000
THEN @ls_str3 + ' ' + [dbo].f_terbilang_detail(@ld_dec2)
WHEN @ls_amount < 1000000000
THEN [dbo].f_terbilang_detail(@ld_dec3) + ' '+ RTRIM('Juta ' + @ls_str3) + ' ' + [dbo].f_terbilang_detail(@ld_dec2)
WHEN @ls_amount < 1000000000000 THEN [dbo].f_terbilang_detail(@ld_dec4) + ' '+ RTRIM('Miliar ' + @ls_str4 + @ls_str3) + ' ' + [dbo].f_terbilang_detail(@ld_dec2) WHEN @ls_amount >= 1000000000000
THEN [dbo].f_terbilang_detail(@ld_dec5) + ' '+ RTRIM('Trilliun ' + @ls_str5 + @ls_str4 + @ls_str3) + ' ' + [dbo].f_terbilang_detail(@ld_dec2)
END
SET @ls_str7 = RTRIM(CAST(@ls_amount AS VARCHAR(20)))
SET @ld_dec6 = CASE WHEN CHARINDEX('.', @ls_str7) = 0 THEN 0 ELSE CAST(RTRIM(SUBSTRING(@ls_str7, CHARINDEX('.',@ls_str7) + 1, 2)) AS INTEGER) END
SET @ld_int1 = LEN(CASE WHEN CHARINDEX('.',@ls_str7) = 0 THEN '0' ELSE RTRIM(SUBSTRING(@ls_str7, CHARINDEX('.',@ls_str7) + 1, 2)) END)
If @ld_dec6 > 0
BEGIN
IF @ld_dec6 < 10 AND @ld_int1 = 1
SET @ld_dec6 = @ld_dec6 * 10
SET @ls_str8 = [dbo].f_terbilang_detail(@ld_dec6)
SET @ls_str1 = @ls_str6 + ' ' + @ls_str8 + 'Sen'
END
ELSE
SET @ls_str1 = @ls_str6 + ''
RETURN (@ls_str1)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE FUNCTION [DBO].[f_terbilang_detail]
(@Nilai as decimal) RETURNS varchar(200) AS
BEGIN
DECLARE
@ls_str1 VARCHAR(200),
@ls_str2 VARCHAR(200),
@li_int1 INTEGER,
@li_int2 INTEGER,
@li_int3 INTEGER,
@li_str3 VARCHAR(200),
@li_str4 VARCHAR(200),
@li_str5 VARCHAR(200)
SET @ls_str2 = RIGHT(RTRIM(Str(@Nilai + 1000)), 3)
SET @li_int1 = CAST(RIGHT(@ls_str2, 1) AS INTEGER)
SET @li_int2 = CAST(SUBSTRING(@ls_str2, 2, 1) AS INTEGER)
SET @li_int3 = CAST(LEFT(@ls_str2, 1) AS INTEGER)
SET @li_str3 = 'Satu Dua Tiga Empat Lima '
SET @li_str3 = @li_str3 + 'Enam Tujuh Delapan Sembilan'
IF @li_int1 = 0
SET @ls_str1 = ''
ELSE
SET @ls_str1 = RTRIM(SUBSTRING(@li_str3, (@li_int1 * 8)-7, 8)) + ' '
IF @li_int2 = 0
SET @li_str4 = @ls_str1
ELSE
IF @li_int2 = 1
IF @li_int1 = 0
SET @li_str4 = 'Sepuluh '
ELSE
IF @li_int1 = 1
SET @li_str4 = 'Sebelas '
ELSE
SET @li_str4 = RTRIM(SUBSTRING(@li_str3, @li_int1 * 8 - 7, 8)) + ' Belas '
ELSE
SET @li_str4 = RTRIM(SUBSTRING(@li_str3, @li_int2 * 8 - 7, 8)) + ' Puluh ' + @ls_str1
IF @li_int3 = 0
SET @li_str5 = @li_str4
ELSE
IF @li_int3 = 1
SET @li_str5 = 'Seratus ' + @li_str4
ELSE
SET @li_str5 = RTRIM(SUBSTRING(@li_str3, @li_int3 * 8 - 7, 8)) + ' Ratus ' + @li_str4
RETURN @li_str5
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
