Conditional Filter In SQL Server Query
Menggunakan query untuk menampilkan data merupakan hal yang sering kita lakukan jika berhubungan dengan data yang tersimpan di dalam database.
Dan best practice-nya adalah sebaiknya kita membuat sebuah stored procedure daripada melakukan hard code query di dalam program karena akan lebih mudah melakukan perawatan terhadap query tersebut jika suatu saat terdapat perubahan logika.
Di dalam stored procedure sendiri kita mudah untuk melakukan beberapa macam logika kondisi. Tetapi hal tersebut akan membuat isi dari stored procedure terlihat lebih panjang dan lebih susah dimengerti untuk pertama kali.
Kita coba bandingkan query untuk logika kondisi dibawah ini :
CARA 1 :
CARA 2 :
Dari sample diatas terlihat bahwa cara kedua akan terlihat lebih pendek dalam penulisan script-nya.
Bayangkan jika logika kondisi terdapat lebih dari 3 filter maka cara nomor 2 akan jauh lebih mudah untuk dibaca dan lebih ringkas.
Dibawah ini sebuah contoh lagi sebuah stored procedure yang akan menampilan all jika @Category adalah "All" dalam hal ini diwakili dengan value 0 dan akan memfilter sesuai kategori jika pilihan @Category selain "All"
Semoga posting tentang "Conditional Filter In SQL Server Query" ini dapat bermanfaat.
Salam,
Dan best practice-nya adalah sebaiknya kita membuat sebuah stored procedure daripada melakukan hard code query di dalam program karena akan lebih mudah melakukan perawatan terhadap query tersebut jika suatu saat terdapat perubahan logika.
Di dalam stored procedure sendiri kita mudah untuk melakukan beberapa macam logika kondisi. Tetapi hal tersebut akan membuat isi dari stored procedure terlihat lebih panjang dan lebih susah dimengerti untuk pertama kali.
Kita coba bandingkan query untuk logika kondisi dibawah ini :
CARA 1 :
IF @var = 1
BEGIN
SELECT * FROM TABLE_NAME WHERE Column = 'A'
END
ELSE
BEGIN
SELECT * FROM TABLE_NAME WHERE Column = 'B'
END
CARA 2 :
SELECT * FROM TABLE_NAME WHERE
CASE WHEN @Var = 1 THEN 'A' ELSE 'B' END = Column
Dari sample diatas terlihat bahwa cara kedua akan terlihat lebih pendek dalam penulisan script-nya.
Bayangkan jika logika kondisi terdapat lebih dari 3 filter maka cara nomor 2 akan jauh lebih mudah untuk dibaca dan lebih ringkas.
Dibawah ini sebuah contoh lagi sebuah stored procedure yang akan menampilan all jika @Category adalah "All" dalam hal ini diwakili dengan value 0 dan akan memfilter sesuai kategori jika pilihan @Category selain "All"
CREATE PROCEDURE [dbo].[sp_SAMPLE]
@Category Int
AS
BEGIN
SELECT * FROM Table_Name WHEREEND
CASE
WHEN @Category = 0 THEN 0
ELSE Table_Name.ID
END =@Category ORDER BY ID ASC
Semoga posting tentang "Conditional Filter In SQL Server Query" ini dapat bermanfaat.
Salam,