Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Klausa WHERE Bersyarat dalam Pelayan SQL dengan Alternatif?

Bagaimana untuk Melaksanakan Klausa WHERE Bersyarat dalam Pelayan SQL dengan Alternatif?

Susan Sarandon
Susan Sarandonasal
2025-01-18 11:16:08658semak imbas

How to Implement Conditional WHERE Clauses in SQL Server with Alternatives?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn