Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Penyata KES Bersarang dengan betul dalam SQL Server 2008 WHERE Klausa?
Menggunakan pernyataan CASE bersarang dalam klausa WHERE dalam SQL Server 2008
Apabila menggunakan SQL Server 2008, pengguna mungkin menghadapi cabaran apabila menggunakan pernyataan CASE dalam klausa WHERE. Mesej ralat selalunya terhasil daripada peletakan yang salah bagi ungkapan bersyarat ini.
Masalah asas ialah sintaks. Pernyataan "CASE" harus digunakan sebagai sebahagian daripada ungkapan, bukan sebagai ungkapan itu sendiri. Contohnya, anda boleh menulis:
<code class="language-sql">WHERE co.DTEntered = CASE WHEN LEN('blah') = 0 THEN co.DTEntered ELSE '2011-01-01' END </code>
Walau bagaimanapun, sintaks berikut adalah salah:
<code class="language-sql">WHERE CASE LEN('TestPerson') WHEN 0 THEN co.personentered = co.personentered ELSE co.personentered LIKE '%TestPerson' END </code>
Untuk menyelesaikan masalah ini, pendekatan yang lebih sesuai ialah menggunakan pernyataan OR gabungan. Pertanyaan yang diubah suai kelihatan seperti ini:
<code class="language-sql">WHERE ( (LEN('TestPerson') = 0 AND co.personentered = co.personentered ) OR (LEN('TestPerson') <> 0 AND co.personentered LIKE '%TestPerson') )</code>
Walaupun pendekatan ini boleh mengurangkan ralat sintaks, ambil perhatian bahawa pernyataan CASE bersarang banyak dalam klausa WHERE boleh menghalang pengoptimuman pertanyaan. Kehadiran ungkapan bersyarat ini menghalang indeks daripada digunakan, yang berpotensi mengakibatkan prestasi pertanyaan yang lemah.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Penyata KES Bersarang dengan betul dalam SQL Server 2008 WHERE Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!