Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menggunakan Logika JIKA... MAKA di SQL Server

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Terjadi kesalahan terkait jaringan atau spesifik contoh saat membuat sambungan ke SQL Server

  2. R DBI ODBC error:nanodbc/nanodbc.cpp:3110:07009:[Microsoft][ODBC Driver 13 untuk SQL Server]Indeks Deskriptor Tidak Valid

  3. Bagaimana cara membuat daftar contoh SQL Server yang tersedia menggunakan SMO di C #?

  4. PILIH KE variabel tabel di T-SQL

  5. 3 Cara Mendaftar Semua Prosedur Tersimpan di Database SQL Server