SQL Server 2008: Menggunakan Pernyataan CASE dengan betul dalam Klausa WHERE
Menggunakan pernyataan CASE
dalam fasal WHERE
dalam SQL Server 2008 boleh membawa kepada ralat jika sintaks tidak betul. Panduan ini menjelaskan penggunaan yang betul dan menawarkan alternatif.
Betul CASE
Peletakan Penyata
Pernyataan CASE
hendaklah menjadi sebahagian daripada ungkapan yang lebih besar dalam klausa WHERE
, bukan keadaan kendiri. Contohnya:
<code class="language-sql">WHERE co.DTEntered = CASE WHEN LEN('blah') = 0 THEN co.DTEntered ELSE '2011-01-01' END</code>
Ralat Sintaks Biasa
Contoh berikut menunjukkan penggunaan yang salah yang akan mengakibatkan ralat:
<code class="language-sql">WHERE CASE LEN('TestPerson') WHEN 0 THEN co.personentered = co.personentered ELSE co.personentered LIKE '%TestPerson' END </code>
Alternatif yang Lebih Cekap: Menggunakan OR
Untuk senario yang lebih mudah, menggabungkan OR
kenyataan selalunya memberikan penyelesaian yang lebih cekap dan boleh dibaca daripada menggunakan CASE
dalam klausa WHERE
:
<code class="language-sql">WHERE ( (LEN('TestPerson') = 0 AND co.personentered = co.personentered ) OR (LEN('TestPerson') <> 0 AND co.personentered LIKE '%TestPerson') )</code>
Implikasi Prestasi
KlausaKompleks WHERE
, tidak kira sama ada ia menggunakan pernyataan CASE
atau logik rumit lain, boleh memberi kesan negatif terhadap prestasi pertanyaan dan menghalang keupayaan pengoptimum pertanyaan untuk menggunakan indeks dengan berkesan. Sentiasa teliti menganalisis dan mengoptimumkan struktur pertanyaan anda untuk hasil terbaik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Pernyataan KES dengan betul dalam SQL Server 2008 WHERE Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!