Archive for SQL

Restore Database Microsoft SQL Server Menggunakan Script

Bila Anda ingin merestore database SQLServer tanpa melalui Enterprise Manager, mungkin ini adalah referensi singkat bagaimana restore database menggunakan SQL Script.

print 'Restore database yourdb'
go
RESTORE DATABASE yourdb
FROM DISK = 'D:\YourDB\DataBackup\YourDBBackup.bak'
go

Membuat Fungsi Terbilang di Microsoft SQL Server

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

Membuat Fungsi Perbedaan Bulan Dan Tahun

Jika ada yang mencari bagaimana membuat fungsi perbedaan bulan dan tahun di SQL Server, mungkin ini bagus buat referensi. Secara ada kerjaan dikantor untuk membuat program mencari perbedaan bulan dan tahun antara kedua tanggal dengan asumsi

1. Tanggal yang sama walaupun beda tahun sudah dikategorikan dalam 1 Tahun.

2. Tanggal 29 Februari Bulan Kabisat dan 1 Maret Bulan biasa sudah dikategorikan 1 Tahun.

Contoh:

1. 01-01-2011 dengan 02-01-2012 menghasilkan “1 Tahun 1 Bulan”

2. 29-02-2008 dengan 01-03-2012 menghasilkan “4 Tahun 2 Bulan”

Berikut source codenya

 

Sorry ya programnya dalam gambar soalnya susah upload syntax sql tersebut di syntax-highlighternya wordpress gagal terus (_ _”)