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

Klausa Check-in Bersyarat di mana

Beberapa orang menggunakan teknik ini

... WHERE @itemid IS NULL OR tbl.itemid = @itemid

Ini menjamin bahwa Anda tidak akan pernah mendapatkan pencarian indeks di kolom itemid.

Pendekatan yang lebih baik jika tabel sama sekali besar adalah dengan membagi kueri menjadi 2 kasus terpisah

IF(@itemid IS NULL)
  SELECT foo FROM bar
ELSE
  SELECT foo FROM bar WHERE itemid = @itemid

Jika jumlah kombinasi terlalu besar, Anda dapat mempertimbangkan SQL dinamis. Pastikan Anda memahami injeksi SQL terlebih dahulu.

Ref:Kondisi Penelusuran Dinamis di T-SQL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bisakah batasan Periksa berhubungan dengan tabel lain?

  2. sql server nama objek tidak valid - tetapi tabel tercantum dalam daftar tabel SSMS

  3. Masukkan Ke dalam Tabel Variabel CTE

  4. Bagaimana Anda memeriksa apakah IDENTITY_INSERT diatur ke ON atau OFF di SQL Server?

  5. Perbaiki Error Msg 4151 "Tipe argumen pertama ke NULLIF tidak dapat menjadi konstanta NULL karena tipe argumen pertama harus diketahui" di SQL Server