Pernyataan KASUS & Kasus Bersarang di SQL Server: Contoh T-SQL
โก Ringkasan Cerdas
CASE adalah ekspresi kondisional di SQL Server yang mengembalikan nilai berdasarkan kondisi pertama yang bernilai benar, menawarkan bentuk Sederhana dan Pencarian serta penestingan di dalam IFโฆELSE, UPDATE, dan ORDER BY.

Ikhtisar Kasus dalam kehidupan nyata!
Sekali lagi, dalam kehidupan nyata, kita melakukan tindakan yang berbeda tergantung pada hasil dari berbagai kondisi. Untuk menjelaskan lebih lanjut, perhatikan contoh di bawah ini:
- Jika tiket penerbangan kurang dari $100, maka saya akan mengunjungi Los Angeles.
- Jika harga tiket pesawat antara $100 hingga $200, maka saya akan mengunjungi New York.
- Jika harga tiket pesawat antara $200 hingga $400, maka saya akan mengunjungi Eropa.
- Jika tidak, saya lebih memilih mengunjungi tempat wisata terdekat.
Mari kita pertimbangkan untuk mengkategorikan kondisi dan tindakan secara terpisah dari contoh di atas:
| Syarat dan Ketentuan โ Tiket Pesawat | Tindakan hanya dilakukan jika Kondisi bernilai 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 |
Pada contoh di atas, kita dapat melihat bahwa hasil dari berbagai kondisi menentukan tindakan yang berbeda. Misalnya, pengunjung hanya akan melakukan tindakan mengunjungi New York jika harga tiket pesawat antara $100 hingga $200. Demikian pula, MSSQL Pernyataan CASE juga menyediakan kemampuan untuk mengeksekusi pernyataan T-SQL yang berbeda berdasarkan hasil dari berbagai kondisi.
Apa itu Pernyataan KASUS di SQL Server?
Pernyataan KASUS di SQL Server merupakan perluasan dari JIKAโฆ LAIN Pernyataan ini berbeda dengan IFโฆELSE, yang hanya mengizinkan maksimal satu kondisi, sedangkan CASE memungkinkan pengguna untuk menerapkan beberapa kondisi untuk melakukan serangkaian tindakan yang berbeda di MS SQL. Pernyataan ini mengembalikan nilai yang sesuai dengan kondisi yang ditentukan oleh pengguna.
Mari kita pelajari cara menggunakan CASE di SQL dan konsepnya di bagian-bagian berikut. Di MS SQL, ada dua jenis CASE:
- KASUS Sederhana
- 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]
Sini:
- Parameter Case_Expression menunjukkan ekspresi yang nantinya akan dibandingkan dengan Value_1, Value_2, dan seterusnya.
- Parameter Statement_1, Statement_2โฆ menunjukkan pernyataan yang akan dieksekusi jika Case_Expression = Value_1, Case_Expression = Value_2, dan seterusnya.
- Singkatnya, kondisinya adalah apakah Case_Expression = Value_N, dan tindakannya adalah eksekusi Statement_N jika hasil di atas BENAR.
- ALIAS_NAME bersifat opsional dan merupakan nama alias yang diberikan pada hasil pernyataan CASE SQL Server. Ini sebagian besar digunakan ketika kita menggunakan CASE dalam klausa SELECT SQL Server.
Aturan untuk Kasus Sederhana
- Simple Case hanya mengizinkan pengecekan kesamaan Case_Expression dengan Value_1 hingga Value_N.
- Case_Expression dibandingkan dengan sebuah nilai, secara berurutan, dimulai dari nilai pertama, yaitu Value_1. Berikut adalah pendekatan eksekusinya:
- 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 kesamaan. Proses membandingkan Case_Expression dengan suatu nilai ini berlanjut hingga Case_Expression menemukan nilai yang setara dari himpunan Value_1, Value_2, dan seterusnya.
- Jika tidak ada yang cocok, maka kendali beralih ke pernyataan ELSE, dan Statement_Else dieksekusi.
- LAINNYA adalah opsional.
- Jika ELSE tidak ada dan Case_Expression tidak cocok dengan nilai apa pun, maka NULL akan ditampilkan.
Diagram di bawah ini menggambarkan alur eksekusi Kasus Sederhana:
contoh
Misalkan kita memiliki sebuah tabel bernama 'Guru99' dengan dua kolom, Tutorial_ID dan Tutorial_name, dan empat baris, seperti yang ditampilkan di bawah ini. Kita akan menggunakan ini 'GuruTabel 99' pada contoh-contoh berikut.
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 dari SIMPLE CASE tanpa ELSE.
Pertanyaan 2: SIMPLE CASE 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 dari SIMPLE CASE dengan ELSE.
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]
Sini:
- Parameter Boolean_Expression_1โฆ menunjukkan ekspresi yang akan dievaluasi untuk TRUE atau FALSE.
- Parameter Statement_1, Statement_2โฆ menunjukkan pernyataan yang akan dieksekusi jika hasil Boolean_Expression_1 dan Boolean_Expression_2 yang sesuai adalah TRUE.
- Singkatnya, kondisinya adalah Boolean_Expression_1โฆ dan tindakannya adalah eksekusi Statement_N jika Boolean_Expression_1 di atas bernilai TRUE.
- ALIAS_NAME bersifat opsional dan merupakan nama alias yang diberikan pada hasil pernyataan CASE. Ini biasanya digunakan ketika kita menggunakan CASE dalam klausa SELECT.
Aturan untuk Kasus Pencarian
- Berbeda dengan Simple Case, Searched Case tidak hanya terbatas pada pengecekan kesamaan tetapi juga memungkinkan ekspresi Boolean.
- Ekspresi Boolean dievaluasi secara berurutan, dimulai dari ekspresi Boolean pertama, yaitu Boolean_Expression_1. Berikut adalah pendekatan eksekusinya:
- Jika Boolean_Expression_1 bernilai TRUE, maka pernyataan WHENโฆTHEN selanjutnya akan dilewati, dan eksekusi CASE akan segera berakhir.
- Jika Boolean_Expression_1 bernilai FALSE, maka Boolean_Expression_2 akan dievaluasi untuk kondisi TRUE. Proses penilaian ekspresi Boolean ini berlanjut hingga salah satu ekspresi Boolean mengembalikan nilai TRUE.
- Jika tidak ada yang cocok, maka kendali beralih ke pernyataan ELSE, dan Statement_Else dieksekusi.
- Sama seperti pada Simple Case, ELSE juga bersifat opsional pada Searched Case.
- Jika ELSE tidak ada dan tidak ada ekspresi Boolean yang mengembalikan TRUE, maka NULL akan ditampilkan.
Diagram di bawah ini menggambarkan alur eksekusi 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 SEARCHED CASE dengan NO ELSE.
Kueri 2: PENCARIAN KASUS dengan opsi 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 SEARCHED CASE dengan ELSE.
Perbedaan antara Pendekatan Eksekusi: SIMPLE dan SEARCH CASE
Mari kita lihat contoh KASUS SEDERHANA 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, 'Tutorial_name' adalah bagian dari ekspresi CASE dalam SQL. Kemudian nilai 'Tutorial_name' dibandingkan dengan setiap nilai WHEN, yaitu, 'SQL'โฆ sampai 'Tutorial_name' cocok dengan nilai WHEN.
Sebaliknya, contoh SEARCH CASE tidak memiliki ekspresi CASE:
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, setiap pernyataan WHEN memiliki ekspresi Boolean kondisionalnya sendiri. Setiap ekspresi Boolean, misalnya, Tutorial_name = 'SQL'โฆ dievaluasi untuk TRUE/FALSE hingga ekspresi Boolean pertama yang dievaluasi menjadi TRUE.
Perbedaan antara Kasus Sederhana dan Kasus yang Dicari
| Kasus Sederhana | Kasus yang Digeledah |
| Kata kunci CASE langsung diikuti oleh CASE_Expression dan berada sebelum pernyataan WHEN.
Misalnya: |
Kata kunci CASE diikuti oleh pernyataan WHEN, dan tidak ada ekspresi di antara CASE dan WHEN.
Misalnya: |
| Dalam Kasus Sederhana, terdapat sebuah NILAI untuk setiap pernyataan WHEN. Nilai-nilai ini (Value_1, Value_2โฆ) dibandingkan dengan satu CASE_Expression secara berurutan. Hasilnya dievaluasi untuk kondisi TRUE/FALSE untuk setiap pernyataan WHEN.
Misalnya: |
Dalam Kasus yang Dicari, terdapat Ekspresi Boolean untuk setiap pernyataan WHEN. Ekspresi Boolean ini (Ekspresi Boolean_1, Ekspresi Boolean_2โฆ) mengevaluasi kondisi BENAR/SALAH untuk setiap pernyataan WHEN.
Misalnya: |
| Kasus Sederhana hanya mendukung pengecekan kesamaan, yaitu, apakah CASE_Expression = VALUE_1, VALUE_2โฆ
Misalnya: |
Dengan Boolean_Expression_N, Searched Case mendukung operasi apa pun yang menghasilkan nilai Boolean. Ini termasuk operator sama dengan dan tidak sama dengan.
Misalnya: |
KASUS Bersarang: KASUS di IF ELSE
Kita dapat menggunakan CASE di dalam pernyataan IFโฆELSE. Kita mendeklarasikan sebuah variabel untuk tiket penerbangan dan bercabang berdasarkan nilainya. Berikut 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
Pada contoh di atas, CASE tersarang di dalam pernyataan IFโฆELSE. Pertama, pernyataan IF dieksekusi, dan jika kondisi CASE di SQL Server adalah False, maka pernyataan ELSE dieksekusi. Bagian ELSE berisi pernyataan CASE bersarang di SQL. Tergantung pada nilai tiket penerbangan, salah satu hasil berikut akan ditampilkan:
- Sistem akan menampilkan 'Kunjungi Lokasi Wisata Terdekat' jika harga tiket pesawat > $400.
- Sistem akan mencetak 'Kunjungi Los Angeles' jika harga tiket pesawat ANTARA $0 DAN $100.
- Sistem akan mencetak 'Visit New York' jika harga tiket pesawat ANTARA $101 DAN $200.
- Sistem akan mencetak 'Visit Europe' jika harga tiket pesawat ANTARA $201 DAN $400.
Hasil di bawah ini menunjukkan lokasi yang dikembalikan ketika CASE bersarang dijalankan di dalam cabang ELSE:
KASUS Bersarang: KASUS di dalam KASUS
Kita dapat menggunakan CASE di dalam CASE lain di SQL. Berikut 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
Pada contoh di atas, CASE bersarang di dalam pernyataan CASE lainnya. Sistem mengeksekusi CASE luar terlebih dahulu; jika Flight_Ticket < $400, CASE dalam akan dijalankan. Lokasi yang dikembalikan mengikuti rentang harga tiket yang sama seperti contoh sebelumnya, sehingga tiket seharga $250 termasuk dalam rentang $201โ$400 dan mengembalikan 'Visit Europe'.
Hasil di bawah ini menunjukkan lokasi yang dikembalikan oleh CASE bagian dalam untuk tiket senilai $250:
KASUS dengan PEMBARUAN
Anggaplah lagi bahwa kita memiliki 'GuruTabel 99' dengan dua kolom dan empat baris, seperti yang ditampilkan di bawah ini:
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 )
Pada contoh di atas, CASE digunakan dalam pernyataan UPDATE. Tergantung pada nilai Tutorial_Name, kolom Tutorial_Name diperbarui dengan nilai pernyataan THEN:
- Jika Tutorial_Name = 'SQL', maka perbarui Tutorial_Name menjadi 'Structured Query language'.
- 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'.
Menjalankan pernyataan tersebut akan memperbarui baris yang cocok, seperti yang ditunjukkan di bawah ini:
Mari kita tanyakan 'GuruTabel 99 untuk memeriksa nilai yang diperbarui:
KASUS dengan Pesanan oleh
Kita dapat menggunakan CASE dengan ORDER BY. Berikut 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 karena ekspresi Boolean WHEN pertama bernilai TRUE, Tutorial_ID dipilih untuk kondisi ORDER BY. Hasilnya ditunjukkan di bawah ini:
Fakta Menarik!
- CASE dapat disarang di dalam CASE lain maupun di dalam pernyataan IFโฆELSE.
- Selain SELECT, CASE dapat digunakan dengan klausa SQL lainnya seperti UPDATE dan ORDER BY.













