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.
- 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]
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.
contoh
Anggapan: Asumsikan kita mempunyai tabel sebagai 'Guru99' dengan dua kolom dan empat baris seperti yang ditampilkan di bawah ini:
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.
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 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.
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.
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.
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: |
Kata kunci case diikuti oleh pernyataan WHEN, dan tidak ada ekspresi antara CASE dan WHEN.
Misalnya: |
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: |
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 Sederhana hanya mendukung pemeriksaan kesetaraan. Yaitu apakah CASE_Expression = VALUE_1, VALUE_2…
Misalnya: |
Dengan Boolean_Expression_N, Kasus Pencarian mendukung operasi apa pun yang menghasilkan nilai Boolean. Ini termasuk operator yang sama dan tidak sama.
Misalnya: |
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: 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
KASUS dengan PEMBARUAN
Asumsi: Asumsikan kita memiliki tabel 'Guru99' dengan dua kolom dan empat baris seperti yang ditampilkan di bawah ini:
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'
Mari kita Kueri tabel Guru99 untuk memeriksa nilai yang diperbarui:
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
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.