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
Lepaskan: 2025-01-11 11:12:42
asal
992 orang telah melayarinya

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:

WHERE co.DTEntered = CASE 
                          WHEN LEN('blah') = 0 
                               THEN co.DTEntered 
                          ELSE '2011-01-01' 
                     END 
Salin selepas log masuk

Walau bagaimanapun, sintaks berikut adalah salah:

WHERE 
    CASE LEN('TestPerson')
        WHEN 0 THEN co.personentered  = co.personentered
   ELSE co.personentered LIKE '%TestPerson'
    END 
Salin selepas log masuk

Untuk menyelesaikan masalah ini, pendekatan yang lebih sesuai ialah menggunakan pernyataan OR gabungan. Pertanyaan yang diubah suai kelihatan seperti ini:

WHERE (
        (LEN('TestPerson') = 0 
             AND co.personentered = co.personentered
        ) 
        OR 
        (LEN('TestPerson') <> 0 
             AND co.personentered LIKE '%TestPerson')
      )
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan