Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Penyata KES Bersarang dengan betul dalam SQL Server 2008 WHERE Klausa?

Bagaimanakah Saya Boleh Menggunakan Penyata KES Bersarang dengan betul dalam SQL Server 2008 WHERE Klausa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-11 11:12:42970semak imbas

How Can I Correctly Use Nested CASE Statements in SQL Server 2008 WHERE Clauses?

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!

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