Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Klausa WHERE Bersyarat dalam Pelayan SQL dengan Alternatif?
Klausa WHERE bersyarat dalam SQL Server: Pelaksanaan dan alternatif
Dalam SQL Server, klausa WHERE bersyarat membolehkan anda menggunakan keadaan penapis secara dinamik berdasarkan nilai ungkapan yang diberikan. Pertimbangkan senario berikut:
Anda mahu mendapatkan semula data daripada jadual yang lajur DateDropped
sepadan dengan nilai tertentu. Walau bagaimanapun, anda juga ingin menggunakan penapis tambahan berdasarkan parameter bernama @JobsOnHold
. Jika @JobsOnHold
ditetapkan kepada 1, anda ingin memasukkan rekod dengan DateAppr
lebih besar daripada atau sama dengan 0. Jika tidak, anda ingin mengecualikan rekod yang DateAppr
sama dengan 0.
Pertanyaan awal yang anda berikan adalah salah. Sintaks yang betul untuk klausa WHERE bersyarat menggunakan CASE ialah:
<code class="language-sql">WHERE DateDropped = 0 AND CASE WHEN @JobsOnHold = 1 THEN DateAppr >= 0 ELSE DateAppr != 0 END</code>
Walau bagaimanapun, wujud alternatif yang lebih mudah yang tidak memerlukan penggunaan CASE:
<code class="language-sql">WHERE DateDropped = 0 AND ( (ISNULL(@JobsOnHold, 0) = 1 AND DateAppr >= 0) OR (ISNULL(@JobsOnHold, 0) != 1 AND DateAppr != 0) )</code>
Dalam versi ini, fungsi ISNULL
digunakan untuk mengendalikan kes di mana @JobsOnHold
mungkin NULL. Nilai lalai @JobsOnHold
ditetapkan kepada 0, memastikan pertanyaan dilaksanakan dengan betul walaupun tiada nilai diberikan kepada parameter.
Memahami klausa WHERE bersyarat
Fasal WHERE bersyarat menilai ungkapan dan menapis keputusan berdasarkan sama ada ungkapan itu benar atau palsu. Jika ungkapan itu benar, baris disertakan dalam set hasil. Jika tidak, baris akan dikecualikan.
Syarat Syarat dalam klausa WHERE boleh menjadi rumit sewenang-wenangnya, membenarkan penapisan yang sangat disesuaikan. Sebagai contoh, anda boleh membuat pertanyaan yang mengecualikan semua rekod yang ditambahkan dalam tempoh 24 jam yang lalu atau hanya memasukkan rekod dengan kod status tertentu.
Alternatif kepada klausa WHERE bersyarat
Dalam sesetengah kes, mungkin terdapat alternatif untuk mendapatkan hasil yang diingini tanpa menggunakan klausa WHERE bersyarat. Sebagai contoh, anda boleh menggunakan fungsi COALESCE
untuk mengendalikan kes di mana @JobsOnHold
ialah NULL. Sebagai alternatif, anda boleh membuat dua pertanyaan berasingan untuk setiap nilai yang mungkin bagi @JobsOnHold
.
Walau bagaimanapun, klausa WHERE bersyarat menyediakan cara yang ringkas dan cekap untuk menggunakan logik penapisan kompleks pada pertanyaan SQL anda. Dengan memahami cara ia berfungsi dan alternatif yang wujud, anda boleh menggunakannya dengan berkesan untuk mendapatkan semula data yang anda perlukan.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Klausa WHERE Bersyarat dalam Pelayan SQL dengan Alternatif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!