Pernyataan KASUS & Kasus Bersarang di SQL Server: Contoh T-SQL

Ikhtisar Kasus dalam kehidupan nyata!

Sekali lagi, dalam kehidupan nyata, kita melakukan tindakan yang berbeda tergantung pada hasil dari kondisi yang berbeda.

Untuk menguraikan lebih lanjut, pertimbangkan contoh di bawah ini:

  • Jika tiket penerbangan kurang dari $100, maka saya akan mengunjungi Los Angeles.
  • Jika harga tiket penerbangan antara $100 hingga $200, maka saya akan mengunjungi New York
  • Jika harga tiket penerbangan antara $200 hingga $400, maka saya akan mengunjungi Eropa
  • Kalau tidak, saya lebih suka mengunjungi beberapa tempat wisata terdekat.

Mari kita pertimbangkan untuk mengkategorikan Kondisi dan Tindakan secara terpisah dari contoh di atas di bawah ini:

Kondisi - Tiket penerbangan Tindakan yang dilakukan, hanya jika Kondisinya BENAR
Less dari $ 100 Kunjungi Los Angeles
Antara $ 100 sampai $ 200 Kunjungi New York
Antara $ 200 sampai $ 400 Kunjungi Eropa
Tak satu pun dari kondisi di atas terpenuhi Tempat wisata terdekat

Dalam contoh di atas, kita dapat melihat bahwa hasil dari kondisi yang berbeda menentukan tindakan yang berbeda. Misalnya, Pengunjung akan melakukan tindakan mengunjungi New York hanya dengan syarat harga tiket penerbangan antara $100 hingga $200.

Demikian pula, pernyataan MS SQL CASE juga menyediakan kemampuan untuk mengambil tindakan dalam mengeksekusi pernyataan T-SQL yang berbeda berdasarkan hasil dari kondisi yang berbeda.

Apa itu Pernyataan KASUS di SQL Server?

Pernyataan KASUS di SQL Server merupakan kepanjangan dari pernyataan IF…ELSE. Tidak seperti IF…ELSE, yang hanya mengizinkan maksimal satu kondisi, CASE memungkinkan pengguna menerapkan beberapa kondisi untuk melakukan serangkaian tindakan berbeda di MS SQL. Ia mengembalikan nilai terkait yang terkait dengan kondisi yang ditentukan oleh pengguna.

Mari pelajari cara menggunakan Case dalam SQL dan konsepnya di bagian berikut.

In MSSQL, ada dua jenis KASUS.

  1. KASUS Sederhana
  2. KASUS yang Dicari

KASUS Sederhana

Sintaks untuk Kasus Sederhana

CASE <Case_Expression>
     WHEN Value_1 THEN Statement_1
     WHEN Value_2 THEN Statement_2
     .
     .
     WHEN Value_N THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Di sini,

  • Parameter Kasus_Ekspresi menunjukkan ekspresi yang pada akhirnya akan kita bandingkan Nilai_1, Nilai_2, ...
  • Parameternya Pernyataan_1, Pernyataan_2… menunjukkan Pernyataan yang akan dieksekusi jika Case_Expression = Nilai_1, Ekspresi_Kasus = Nilai_2,… dan seterusnya.
  • Singkatnya, itu kondisi apakah Case_Expression = Value_N dan ACTION adalah eksekusi Statement_N jika hasil di atas BENAR.
  • NAMA ALIAS bersifat opsional dan merupakan nama alias yang diberikan pada hasil pernyataan KASUS SQL Server. Sebagian besar digunakan ketika kita menggunakan Case dalam klausa pemilihan server SQL.

Aturan untuk Kasus Sederhana

  • Simple Case hanya mengizinkan pemeriksaan kesetaraan Case_Expression dengan Value_1 hingga Value_N.
  • Case_Expression dibandingkan dengan Value, secara berurutan dimulai dari nilai pertama, yaitu Value_1. Di bawah ini adalah pendekatan eksekusi:
  • Jika Case_Expression setara dengan Value_1, maka pernyataan WHEN…THEN selanjutnya akan dilewati, dan eksekusi CASE akan segera BERAKHIR.
  • Jika Case_Expression tidak cocok dengan Value_1, maka Case_Expression dibandingkan dengan Value_2 untuk kesetaraan. Proses membandingkan Ekspresi_Kasus dengan Nilai akan berlanjut hingga Ekspresi_Kasus menemukan nilai setara yang cocok dari kumpulan Nilai_1, Nilai_2,…
  • Jika tidak ada yang cocok, maka kontrol menuju ke pernyataan ELSE, dan Statement_Else akan dieksekusi.
  • LAINNYA adalah opsional.
  • Jika ELSE tidak ada dan Case_Expression tidak cocok dengan nilai apa pun, maka Null akan ditampilkan.

Diagram di bawah menggambarkan alur eksekusi Kasus Sederhana.

Cara Kerja Pernyataan Kasus Sederhana
Cara Kerja Pernyataan Kasus Sederhana

contoh

Anggapan: Asumsikan kita mempunyai tabel sebagai 'Guru99' dengan dua kolom dan empat baris seperti yang ditampilkan di bawah ini:

Kasus Sederhana di SQL Server

Kami akan gunakan 'Guru99' tabel dalam contoh selanjutnya

Kueri 1: KASUS SEDERHANA dengan opsi NO ELSE

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Hasil: Diagram di bawah ini menjelaskan alur eksekusi SIMPLE CASE with NO ELSE.

Kasus Sederhana di SQL Server

Kueri 2: KASUS SEDERHANA dengan opsi ELSE.

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Hasil: Diagram di bawah ini menjelaskan alur eksekusi SIMPLE CASE dengan ELSE.

Kasus Sederhana di SQL Server

KASUS yang Dicari

Sintaks untuk Kasus yang Dicari

CASE 
     WHEN <Boolean_Expression_1> THEN Statement_1
     WHEN <Boolean_Expression_2> THEN Statement_2
     .
     .
     WHEN <Boolean_Expression_N> THEN Statement_N
     [ELSE Statement_Else]   
END AS [ALIAS_NAME]

Di sini,

  • Parameter Boolean_Expression_1, …menunjukkan ekspresi yang akan dievaluasi TRUE atau FALSE.
  • Parameter Statement_1, Statement_2… menunjukkan Pernyataan yang akan dieksekusi jika hasil Boolean_Expression_1, Boolean_Expression_2 yang sesuai adalah TRUE.
  • Singkatnya, Kondisi adalah Boolean_Expression_1,… dan ACTION adalah eksekusi Pernyataan_N jika boolean_Expression_1 di atas adalah TRUE.
  • ALIAS_NAME bersifat opsional dan merupakan nama alias yang diberikan pada hasil pernyataan CASE. Kebanyakan digunakan ketika kita menggunakan CASE dalam klausa pemilihan.

Aturan untuk Kasus Pencarian

  • Berbeda dengan kasus sederhana, Kasus Pencarian tidak terbatas hanya pada pemeriksaan kesetaraan tetapi memungkinkan ekspresi Boolean.
  • Ekspresi Boolean dievaluasi, secara berurutan mulai dari ekspresi Boolean pertama, yaitu Boolean_expression_1. Di bawah ini adalah pendekatan eksekusi:
    • Jika Boolean_expression_1 adalah TRUE, maka pernyataan WHEN…THEN selanjutnya akan dilewati, dan eksekusi CASE akan segera BERAKHIR.
    • Jika Boolean_expression_1 bernilai FALSE, maka Boolean_expression_2 dievaluasi kondisinya TRUE. Proses penilaian ekspresi_boolean ini akan berlanjut hingga salah satu ekspresi_boolean mengembalikan TRUE.
    • Jika tidak ada yang cocok, maka kontrol menuju ke pernyataan ELSE, dan Statement_Else akan dieksekusi.
  • Like Simple Case ELSE juga opsional dalam Search case.
  • Jika ELSE tidak ada dan tidak ada ekspresi Boolean yang mengembalikan TRUE, maka Null akan ditampilkan.

Diagram Di Bawah Ini mengilustrasikan alur eksekusi Kasus yang Digeledah.

Pengerjaan Pernyataan Kasus yang Dicari

Pengerjaan Pernyataan Kasus yang Dicari

contoh

Kueri 1: KASUS YANG DICARI dengan opsi NO ELSE

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Hasil: Diagram di bawah ini menjelaskan alur eksekusi dari KASUS YANG DICARI dengan TIDAK ADA YANG LAIN.

Contoh KASUS yang dicari di SQL Server

Kueri 2: KASUS YANG DICARI pada pengatur terkenal. Pengatur ini menawarkan bantuan hukum kepada traderapabila trader berselisih dengan broker yang terdaftar dengan mereka. ELSE .

SELECT Tutorial_ID, Tutorial_name,
CASE 
	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Hasil: Diagram di bawah ini menjelaskan alur eksekusi of KASUS YANG DICARI dengan KALAU TIDAK.

Mencari KASUS di SQL Server

Perbedaan antara pendekatan eksekusi: SIMPLE dan SEARCH CASE.

Mari kita simak KASUS SEDERHANA contoh di bawah ini:

SELECT Tutorial_ID, Tutorial_name,
CASE Tutorial_name
	WHEN 'SQL' THEN 'SQL is developed by IBM'
	WHEN 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
	ELSE 'This is NO SQL language.'
END AS Description
FROM Guru99

Di sini, 'Nama_Tutorial' adalah bagian dari ekspresi CASE dalam SQL. Kemudian 'Nama_Tutorial' nilainya dibandingkan masing-masing KAPAN nilai, yaitu 'SQL'… hingga 'Tutorial_name' cocok dengan nilai WHEN.

Sebaliknya, PENCARIAN KASUS contoh tidak memiliki Ekspresi KASUS:

SELECT Tutorial_ID, Tutorial_name,
CASE 
 	WHEN Tutorial_name = 'SQL' THEN 'SQL is developed by IBM'
	WHEN Tutorial_name = 'PL/SQL' THEN 'PL/SQL is developed by Oracle Corporation.'
	WHEN Tutorial_name = 'MS-SQL' THEN 'MS-SQL is developed by Microsoft Corporation.'
END AS Description
FROM Guru99

Di sini, masing-masing pernyataan KAPAN memiliki nya Ekspresi Boolean bersyarat. Masing-masing ekspresi Boolean yaitu Tutorial_name = 'SQL',… dievaluasi BENAR SALAH sampai Boolean pertama ekspresi yang bernilai BENAR.

Perbedaan antara kasus Sederhana dan kasus yang dicari

Kasus Sederhana Kasus yang Digeledah
Kata kunci CASE segera diikuti oleh CASE_Expression dan sebelum pernyataan WHEN.

Misalnya:
KASUS
KETIKA Nilai_1 MAKA Pernyataan_1…

Kata kunci case diikuti oleh pernyataan WHEN, dan tidak ada ekspresi antara CASE dan WHEN.

Misalnya:
KASUS KAPAN LALU Pernyataan_1…

Dalam Kasus Sederhana, VALUE ada untuk setiap pernyataan WHEN. Nilai ini: Nilai_1, Nilai_2… Dibandingkan dengan CASE_Expression tunggal secara berurutan. Hasilnya mendapatkan evaluasi kondisi TRUE/FALSE untuk setiap Pernyataan WHEN.

Misalnya:
KASUS
KETIKA Nilai_1 MAKA Pernyataan_1…
KETIKA Nilai_2 MAKA Pernyataan_2…

Dalam Kasus Pencarian, Boolean_Expression ada untuk setiap pernyataan WHEN. Boolean_Expressions ini: Boolean_Expression_1, Boolean_Expression_2,… mengevaluasi kondisi TRUE/FALSE untuk setiap Pernyataan WHEN.

Misalnya:
KASUS
KAPAN LALU Pernyataan_1…
KAPAN LALU Pernyataan_2…

Kasus Sederhana hanya mendukung pemeriksaan kesetaraan. Yaitu apakah CASE_Expression = VALUE_1, VALUE_2…

Misalnya:
KASUS WHEN Value_1 THEN Statement_1…Dalam contoh di atas, satu-satunya operasi yang dilakukan oleh sistem adalah memeriksa apakah Case_Expression = Value_1

Dengan Boolean_Expression_N, Kasus Pencarian mendukung operasi apa pun yang menghasilkan nilai Boolean. Ini termasuk operator yang sama dan tidak sama.

Misalnya:
KASUS KAPAN LALU Pernyataan_1… Dalam contoh di atas, Boolean_Expression_1 dapat berisi operator 'sama dengan' dan 'tidak sama dengan' seperti A = B, A != B.

KASUS Bersarang: KASUS di IF ELSE

Kita dapat menggunakan KASUS di dalam JIKA LAIN. Di bawah ini adalah contoh kode MS-SQL

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 190;
IF @Flight_Ticket > 400
   PRINT 'Visit Nearby Tourist Location';
ELSE 
BEGIN
    SELECT
	CASE 
	WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
	WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
	WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
	END AS Location	
END

Dalam contoh di atas CASE adalah NESTED di dalam pernyataan IF…ELSE:

Pertama, Pernyataan IF akan dijalankan dan Kondisi Kasus akan dijalankan SQL server adalah False maka pernyataan ELSE akan dieksekusi.

Jika tidak, akan ada Pernyataan Nested CASE dalam SQL di dalamnya. Bergantung pada nilai tiket pesawat, salah satu hasil berikut akan ditampilkan:

  • Sistem akan mencetak 'Kunjungi Lokasi Wisata Terdekat' jika harga tiket penerbangan > $400
  • Sistem akan mencetak 'Kunjungi Los Angeles' jika harga tiket penerbangan ANTARA $0 DAN $100
  • Sistem akan mencetak 'Kunjungi New York' jika harga tiket penerbangan ANTARA $101 DAN $200
  • Sistem akan mencetak 'Kunjungi Eropa' jika harga tiket penerbangan ANTARA $201 DAN $400

KASUS Bersarang di SQL Server

KASUS Bersarang: KASUS di dalam KASUS

Kita bisa menggunakan CASE di dalam CASE di SQL. Di bawah ini adalah contoh kode MS-SQL

DECLARE @Flight_Ticket int;
SET @Flight_Ticket = 250;
SELECT
CASE 
WHEN @Flight_Ticket >= 400 THEN 'Visit Nearby Tourist Location.'
WHEN @Flight_Ticket < 400 THEN 
    	CASE 
		WHEN @Flight_Ticket BETWEEN 0 AND 100 THEN 'Visit Los Angeles'
		WHEN @Flight_Ticket BETWEEN 101 AND 200 THEN 'Visit New York'
		WHEN @Flight_Ticket BETWEEN 201 AND 400 THEN 'Visit Europe'
		END	
END AS Location

Dalam contoh di atas, CASE NESTED di dalam pernyataan CASE lain:

Sistem dimulai dengan mengeksekusi CASE luar. Jika Flight_Ticket < $400 maka inner CASE akan dijalankan.

Tergantung pada nilai tiket pesawat, salah satu hasil berikut akan ditampilkan:

  • Sistem akan mencetak 'Kunjungi Lokasi Wisata Terdekat' jika harga tiket penerbangan > $400
  • Sistem akan mencetak 'Kunjungi Los Angeles' jika harga tiket penerbangan ANTARA $0 DAN $100
  • Sistem akan mencetak 'Kunjungi New York' jika harga tiket penerbangan ANTARA $101 DAN $200
  • Sistem akan mencetak 'Kunjungi Eropa' jika harga tiket penerbangan ANTARA $201 DAN $400

Contoh KASUS bersarang di SQL Server

KASUS dengan PEMBARUAN

Asumsi: Asumsikan kita memiliki tabel 'Guru99' dengan dua kolom dan empat baris seperti yang ditampilkan di bawah ini:

KASUS dengan PEMBARUAN di SQL Server

Kami akan menggunakan tabel 'Guru99' dalam contoh selanjutnya

Kita dapat menggunakan CASE dengan UPDATE. Di bawah ini adalah contoh kode MS-SQL:

UPDATE Guru99
SET Tutorial_Name = 
	(
	CASE
	WHEN Tutorial_Name = 'SQL' THEN 'Structured Query language.'
	WHEN Tutorial_Name = 'PL/SQL' THEN 'Oracle PL/SQL'
	WHEN Tutorial_Name = 'MSSQL' THEN 'Microsoft SQL.'
	WHEN Tutorial_Name = 'Hadoop' THEN 'Apache Hadoop.'
	END
	)

Dalam contoh di atas CASE digunakan dalam pernyataan UPDATE.

Bergantung pada Nilai Tutorial_Name, kolom Tutorial_Name akan diperbarui dengan nilai Pernyataan THEN.

  • Jika Tutorial_Name = 'SQL' MAKA perbarui Tutorial_Name menjadi 'Bahasa Kueri Terstruktur'
  • Jika Tutorial_Name = 'PL/SQL' MAKA perbarui Tutorial_Name menjadi 'Oracle PL/SQL'
  • Jika Tutorial_Name = 'MSSQL' MAKA perbarui Tutorial_Name menjadi 'Microsoft SQL'
  • Jika Tutorial_Name = 'Hadoop' MAKA perbarui Tutorial_Name menjadi 'Apache Hadoop'

KASUS dengan PEMBARUAN di SQL Server

Mari kita Kueri tabel Guru99 untuk memeriksa nilai yang diperbarui:

KASUS dengan PEMBARUAN di SQL Server

KASUS dengan Pesanan oleh

Kita bisa menggunakan CASE dengan Order By. Di bawah ini adalah contoh kode MS-SQL:

Declare @Order Int;
Set @Order = 1
Select * from Guru99 order by 
CASE 
	WHEN @Order = 1 THEN Tutorial_ID
	WHEN @Order = 2 THEN Tutorial_Name
	END
DESC

Di sini CASE digunakan dengan Order By.

@Order diatur ke 1 dan sebagai yang pertama KETIKA ekspresi Boolean bernilai TRUE, Tutorial_ID dipilih untuk Diurutkan berdasarkan Kondisi

KASUS dengan Pesan oleh di SQL Server

Fakta Menarik!

  • CASE dapat disarangkan di CASE lain dan juga di pernyataan IF…ELSE lainnya.
  • Selain SELECT, CASE dapat digunakan dengan yang lain SQL klausa seperti UPDATE, ORDER BY.

Kesimpulan

  • Di MS SQL, ada dua jenis CASE: Simple CASE dan Searched CASE
  • ELSE bersifat opsional dalam pernyataan CASE.