SQL Server memiliki kemampuan unik yang memungkinkan Anda mengeksekusi logika program waktu nyata pada nilai dalam kueri Anda. Berdasarkan evaluasi logis tersebut, Anda dapat menghasilkan berbagai nilai sebagai bagian dari kumpulan data yang dikembalikan.
Menggunakan Pernyataan KASUS
Ini paling mudah dilakukan di semua versi SQL Server menggunakan CASE pernyataan, yang bertindak sebagai logika IF...THEN...ELSE ekspresi dan mengembalikan berbagai nilai tergantung pada hasilnya.
Dalam contoh di bawah ini, kami ingin mengembalikan locale tambahan kolom yang menentukan apakah buku kita berlatar di Middle-earth atau regular Old Earth.
SELECT
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale,
books.*
FROM
books
Sebelum kita memeriksa CASE khusus aspek pernyataan ini, mari kita hapus sementara CASE untuk memperhatikan bahwa ini adalah SELECT . yang sangat sederhana pernyataan di permukaan:
SELECT
books.*
FROM
books
Oleh karena itu, mari kita periksa bagaimana CASE bagian terstruktur dan perilaku logis apa yang kami lakukan.
CASE
WHEN
books.title = 'The Hobbit'
THEN
'Middle-earth'
WHEN
books.primary_author = 'Tolkien'
THEN
'Middle-earth'
ELSE
'Earth'
END AS locale
Untuk memulai, kita menginisialisasi CASE pernyataan kemudian tentukan dalam kondisi apa (WHEN ) CASE kami pernyataan harus mengevaluasi hasil. Dalam contoh ini, kami memeriksa books.title dan books.primary_author; jika cocok dengan tema Tolkien-esque kami, THEN kami mengembalikan nilai 'Middle-earth.' Jika tidak ada bidang yang cocok dengan pencarian kami, kami mengembalikan nilai 'Earth.'
Untuk mengatur ulang logika sebagai kode psuedo IF...THEN...ELSE pernyataan, kami hanya meminta SQL untuk mengevaluasi:
IF
title == 'The Hobbit' OR
primary_author == 'Tolkien'
THEN
RETURN 'Middle-earth'
ELSE
RETURN 'Earth'
END
Terakhir, penting untuk diingat bahwa CASE pernyataan harus selalu ditambahkan di akhir dengan END . yang cocok penyataan. Pada contoh di atas, kami juga mengganti nama nilai yang dihasilkan yang dikembalikan ke locale , meskipun itu tentu opsional.
Menggunakan Fungsi IIF
Jika Anda menggunakan versi SQL yang lebih modern, perlu diketahui bahwa SQL Server 2012 memperkenalkan IIF yang sangat berguna. fungsi. IIF adalah metode singkatan untuk melakukan IF...ELSE /CASE pernyataan dan mengembalikan salah satu dari dua nilai, tergantung pada evaluasi hasilnya.
Restrukturisasi contoh kami di atas untuk menggunakan IIF cukup sederhana.
SELECT
IIF(
books.title = 'The Hobbit' OR books.primary_author = 'Tolkien',
'Middle-earth',
'Earth')
AS locale,
books.*
FROM
books
Dengan IIF fungsi, kami sebagian besar mengganti banyak gula sintaksis dari CASE pernyataan dengan beberapa pemisah koma sederhana untuk membedakan argumen kami.
Semua diberitahu, keduanya CASE dan IIF menyelesaikan pekerjaan yang sama, tetapi jika diberi pilihan, IIF umumnya akan lebih mudah digunakan.